Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(513)

Side by Side Diff: runtime/vm/message_test.cc

Issue 749373002: - Implement Isolate.ping. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/assert.h" 5 #include "platform/assert.h"
6 #include "vm/message.h" 6 #include "vm/message.h"
7 #include "vm/unit_test.h" 7 #include "vm/unit_test.h"
8 8
9 namespace dart { 9 namespace dart {
10 10
11 11
12 static uint8_t* AllocMsg(const char* str) { 12 static uint8_t* AllocMsg(const char* str) {
13 return reinterpret_cast<uint8_t*>(strdup(str)); 13 return reinterpret_cast<uint8_t*>(strdup(str));
14 } 14 }
15 15
16 16
17 TEST_CASE(MessageQueue_BasicOperations) { 17 TEST_CASE(MessageQueue_BasicOperations) {
18 MessageQueue queue; 18 MessageQueue queue;
19 EXPECT(queue.IsEmpty()); 19 EXPECT(queue.IsEmpty());
20 20
21 Dart_Port port = 1; 21 Dart_Port port = 1;
22 22
23 const char* str1 = "msg1"; 23 const char* str1 = "msg1";
24 const char* str2 = "msg2"; 24 const char* str2 = "msg2";
25 const char* str3 = "msg3";
26 const char* str4 = "msg4";
27 const char* str5 = "msg5";
25 28
26 // Add two messages. 29 // Add two messages.
27 Message* msg1 = 30 Message* msg1 = new Message(
28 new Message(port, AllocMsg(str1), strlen(str1) + 1, 31 port, AllocMsg(str1), strlen(str1) + 1, Message::kNormalPriority);
29 Message::kNormalPriority); 32 queue.Enqueue(msg1, false);
30 queue.Enqueue(msg1);
31 EXPECT(!queue.IsEmpty()); 33 EXPECT(!queue.IsEmpty());
32 34
33 Message* msg2 = 35 Message* msg2 = new Message(
34 new Message(port, AllocMsg(str2), strlen(str2) + 1, 36 port, AllocMsg(str2), strlen(str2) + 1, Message::kNormalPriority);
35 Message::kNormalPriority); 37 queue.Enqueue(msg2, false);
36
37 queue.Enqueue(msg2);
38 EXPECT(!queue.IsEmpty()); 38 EXPECT(!queue.IsEmpty());
39 39
40 // Remove two messages. 40 // Remove two messages.
41 Message* msg = queue.Dequeue(); 41 Message* msg = queue.Dequeue();
42 EXPECT(msg != NULL); 42 EXPECT(msg != NULL);
43 EXPECT_STREQ(str1, reinterpret_cast<char*>(msg->data())); 43 EXPECT_STREQ(str1, reinterpret_cast<char*>(msg->data()));
44 EXPECT(!queue.IsEmpty()); 44 EXPECT(!queue.IsEmpty());
45 45
46 msg = queue.Dequeue(); 46 msg = queue.Dequeue();
47 EXPECT(msg != NULL); 47 EXPECT(msg != NULL);
48 EXPECT_STREQ(str2, reinterpret_cast<char*>(msg->data())); 48 EXPECT_STREQ(str2, reinterpret_cast<char*>(msg->data()));
49 EXPECT(queue.IsEmpty()); 49 EXPECT(queue.IsEmpty());
50 50
51 Message* msg3 = new Message(Message::kIllegalPort,
52 AllocMsg(str3), strlen(str3) + 1,
53 Message::kNormalPriority);
54 queue.Enqueue(msg3, true);
55 EXPECT(!queue.IsEmpty());
56
57 Message* msg4 = new Message(Message::kIllegalPort,
58 AllocMsg(str4), strlen(str4) + 1,
59 Message::kNormalPriority);
60 queue.Enqueue(msg4, true);
61 EXPECT(!queue.IsEmpty());
62
63 Message* msg5 = new Message(
64 port, AllocMsg(str5), strlen(str5) + 1, Message::kNormalPriority);
65 queue.Enqueue(msg5, false);
66 EXPECT(!queue.IsEmpty());
siva 2014/12/01 19:48:05 Maybe the test would be better if you Enqueued ano
Ivan Posva 2014/12/12 20:21:46 Done.
67
68 msg = queue.Dequeue();
69 EXPECT(msg != NULL);
70 EXPECT_STREQ(str3, reinterpret_cast<char*>(msg->data()));
71 EXPECT(!queue.IsEmpty());
72
73 msg = queue.Dequeue();
74 EXPECT(msg != NULL);
75 EXPECT_STREQ(str4, reinterpret_cast<char*>(msg->data()));
76 EXPECT(!queue.IsEmpty());
77
siva 2014/12/01 19:48:05 Over here: msg = queue.Dequeue(); EXPECT(msg != N
Ivan Posva 2014/12/12 20:21:47 Done.
78 msg = queue.Dequeue();
79 EXPECT(msg != NULL);
80 EXPECT_STREQ(str5, reinterpret_cast<char*>(msg->data()));
81 EXPECT(queue.IsEmpty());
82
51 delete msg1; 83 delete msg1;
52 delete msg2; 84 delete msg2;
85 delete msg3;
86 delete msg4;
87 delete msg5;
53 } 88 }
54 89
55 90
56 TEST_CASE(MessageQueue_Clear) { 91 TEST_CASE(MessageQueue_Clear) {
57 MessageQueue queue; 92 MessageQueue queue;
58 Dart_Port port1 = 1; 93 Dart_Port port1 = 1;
59 Dart_Port port2 = 2; 94 Dart_Port port2 = 2;
60 95
61 const char* str1 = "msg1"; 96 const char* str1 = "msg1";
62 const char* str2 = "msg2"; 97 const char* str2 = "msg2";
63 98
64 // Add two messages. 99 // Add two messages.
65 Message* msg1 = 100 Message* msg1 =
66 new Message(port1, AllocMsg(str1), strlen(str1) + 1, 101 new Message(port1, AllocMsg(str1), strlen(str1) + 1,
67 Message::kNormalPriority); 102 Message::kNormalPriority);
68 queue.Enqueue(msg1); 103 queue.Enqueue(msg1, false);
69 Message* msg2 = 104 Message* msg2 =
70 new Message(port2, AllocMsg(str2), strlen(str2) + 1, 105 new Message(port2, AllocMsg(str2), strlen(str2) + 1,
71 Message::kNormalPriority); 106 Message::kNormalPriority);
72 queue.Enqueue(msg2); 107 queue.Enqueue(msg2, false);
73 108
74 EXPECT(!queue.IsEmpty()); 109 EXPECT(!queue.IsEmpty());
75 queue.Clear(); 110 queue.Clear();
76 EXPECT(queue.IsEmpty()); 111 EXPECT(queue.IsEmpty());
77 112
78 // msg1 and msg2 already delete by FlushAll. 113 // msg1 and msg2 already delete by FlushAll.
79 } 114 }
80 115
81 } // namespace dart 116 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698