OLD | NEW |
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 |
(...skipping 22 matching lines...) Expand all Loading... |
33 } | 33 } |
34 | 34 |
35 | 35 |
36 TEST_CASE(MessageQueue_BasicOperations) { | 36 TEST_CASE(MessageQueue_BasicOperations) { |
37 MessageQueue queue; | 37 MessageQueue queue; |
38 MessageQueueTestPeer queue_peer(&queue); | 38 MessageQueueTestPeer queue_peer(&queue); |
39 EXPECT(!queue_peer.HasMessage()); | 39 EXPECT(!queue_peer.HasMessage()); |
40 | 40 |
41 Dart_Port port = 1; | 41 Dart_Port port = 1; |
42 | 42 |
| 43 const char* str1 = "msg1"; |
| 44 const char* str2 = "msg2"; |
| 45 |
43 // Add two messages. | 46 // Add two messages. |
44 Message* msg1 = | 47 Message* msg1 = |
45 new Message(port, 0, AllocMsg("msg1"), Message::kNormalPriority); | 48 new Message(port, 0, AllocMsg(str1), strlen(str1) + 1, |
| 49 Message::kNormalPriority); |
46 queue.Enqueue(msg1); | 50 queue.Enqueue(msg1); |
47 EXPECT(queue_peer.HasMessage()); | 51 EXPECT(queue_peer.HasMessage()); |
48 | 52 |
49 Message* msg2 = | 53 Message* msg2 = |
50 new Message(port, 0, AllocMsg("msg2"), Message::kNormalPriority); | 54 new Message(port, 0, AllocMsg(str2), strlen(str2) + 1, |
| 55 Message::kNormalPriority); |
51 | 56 |
52 queue.Enqueue(msg2); | 57 queue.Enqueue(msg2); |
53 EXPECT(queue_peer.HasMessage()); | 58 EXPECT(queue_peer.HasMessage()); |
54 | 59 |
55 // Remove two messages. | 60 // Remove two messages. |
56 Message* msg = queue.Dequeue(); | 61 Message* msg = queue.Dequeue(); |
57 EXPECT(msg != NULL); | 62 EXPECT(msg != NULL); |
58 EXPECT_STREQ("msg1", reinterpret_cast<char*>(msg->data())); | 63 EXPECT_STREQ(str1, reinterpret_cast<char*>(msg->data())); |
59 EXPECT(queue_peer.HasMessage()); | 64 EXPECT(queue_peer.HasMessage()); |
60 | 65 |
61 msg = queue.Dequeue(); | 66 msg = queue.Dequeue(); |
62 EXPECT(msg != NULL); | 67 EXPECT(msg != NULL); |
63 EXPECT_STREQ("msg2", reinterpret_cast<char*>(msg->data())); | 68 EXPECT_STREQ(str2, reinterpret_cast<char*>(msg->data())); |
64 EXPECT(!queue_peer.HasMessage()); | 69 EXPECT(!queue_peer.HasMessage()); |
65 | 70 |
66 delete msg1; | 71 delete msg1; |
67 delete msg2; | 72 delete msg2; |
68 } | 73 } |
69 | 74 |
70 | 75 |
71 TEST_CASE(MessageQueue_FlushAll) { | 76 TEST_CASE(MessageQueue_FlushAll) { |
72 MessageQueue queue; | 77 MessageQueue queue; |
73 MessageQueueTestPeer queue_peer(&queue); | 78 MessageQueueTestPeer queue_peer(&queue); |
74 Dart_Port port1 = 1; | 79 Dart_Port port1 = 1; |
75 Dart_Port port2 = 2; | 80 Dart_Port port2 = 2; |
76 | 81 |
| 82 const char* str1 = "msg1"; |
| 83 const char* str2 = "msg2"; |
| 84 |
77 // Add two messages. | 85 // Add two messages. |
78 Message* msg1 = | 86 Message* msg1 = |
79 new Message(port1, 0, AllocMsg("msg1"), Message::kNormalPriority); | 87 new Message(port1, 0, AllocMsg(str1), strlen(str1) + 1, |
| 88 Message::kNormalPriority); |
80 queue.Enqueue(msg1); | 89 queue.Enqueue(msg1); |
81 Message* msg2 = | 90 Message* msg2 = |
82 new Message(port2, 0, AllocMsg("msg2"), Message::kNormalPriority); | 91 new Message(port2, 0, AllocMsg(str2), strlen(str2) + 1, |
| 92 Message::kNormalPriority); |
83 queue.Enqueue(msg2); | 93 queue.Enqueue(msg2); |
84 | 94 |
85 EXPECT(queue_peer.HasMessage()); | 95 EXPECT(queue_peer.HasMessage()); |
86 queue.FlushAll(); | 96 queue.FlushAll(); |
87 EXPECT(!queue_peer.HasMessage()); | 97 EXPECT(!queue_peer.HasMessage()); |
88 | 98 |
89 // msg1 and msg2 already delete by FlushAll. | 99 // msg1 and msg2 already delete by FlushAll. |
90 } | 100 } |
91 | 101 |
92 | 102 |
93 TEST_CASE(MessageQueue_Flush) { | 103 TEST_CASE(MessageQueue_Flush) { |
94 MessageQueue queue; | 104 MessageQueue queue; |
95 MessageQueueTestPeer queue_peer(&queue); | 105 MessageQueueTestPeer queue_peer(&queue); |
96 Dart_Port port1 = 1; | 106 Dart_Port port1 = 1; |
97 Dart_Port port2 = 2; | 107 Dart_Port port2 = 2; |
98 | 108 |
| 109 const char* str1 = "msg1"; |
| 110 const char* str2 = "msg2"; |
| 111 |
99 // Add two messages on different ports. | 112 // Add two messages on different ports. |
100 Message* msg1 = | 113 Message* msg1 = |
101 new Message(port1, 0, AllocMsg("msg1"), Message::kNormalPriority); | 114 new Message(port1, 0, AllocMsg(str1), strlen(str1) + 1, |
| 115 Message::kNormalPriority); |
102 queue.Enqueue(msg1); | 116 queue.Enqueue(msg1); |
103 Message* msg2 = | 117 Message* msg2 = |
104 new Message(port2, 0, AllocMsg("msg2"), Message::kNormalPriority); | 118 new Message(port2, 0, AllocMsg(str2), strlen(str2) + 1, |
| 119 Message::kNormalPriority); |
105 queue.Enqueue(msg2); | 120 queue.Enqueue(msg2); |
106 EXPECT(queue_peer.HasMessage()); | 121 EXPECT(queue_peer.HasMessage()); |
107 | 122 |
108 queue.Flush(port1); | 123 queue.Flush(port1); |
109 | 124 |
110 // One message is left in the queue. | 125 // One message is left in the queue. |
111 EXPECT(queue_peer.HasMessage()); | 126 EXPECT(queue_peer.HasMessage()); |
112 Message* msg = queue.Dequeue(); | 127 Message* msg = queue.Dequeue(); |
113 EXPECT(msg != NULL); | 128 EXPECT(msg != NULL); |
114 EXPECT_STREQ("msg2", reinterpret_cast<char*>(msg->data())); | 129 EXPECT_STREQ(str2, reinterpret_cast<char*>(msg->data())); |
115 | 130 |
116 EXPECT(!queue_peer.HasMessage()); | 131 EXPECT(!queue_peer.HasMessage()); |
117 | 132 |
118 // msg1 is already deleted by Flush. | 133 // msg1 is already deleted by Flush. |
119 delete msg2; | 134 delete msg2; |
120 } | 135 } |
121 | 136 |
122 | 137 |
123 TEST_CASE(MessageQueue_Flush_MultipleMessages) { | 138 TEST_CASE(MessageQueue_Flush_MultipleMessages) { |
124 MessageQueue queue; | 139 MessageQueue queue; |
125 MessageQueueTestPeer queue_peer(&queue); | 140 MessageQueueTestPeer queue_peer(&queue); |
126 Dart_Port port1 = 1; | 141 Dart_Port port1 = 1; |
127 | 142 |
| 143 const char* str1 = "msg1"; |
| 144 const char* str2 = "msg2"; |
| 145 |
128 Message* msg1 = | 146 Message* msg1 = |
129 new Message(port1, 0, AllocMsg("msg1"), Message::kNormalPriority); | 147 new Message(port1, 0, AllocMsg(str1), strlen(str1) + 1, |
| 148 Message::kNormalPriority); |
130 queue.Enqueue(msg1); | 149 queue.Enqueue(msg1); |
131 Message* msg2 = | 150 Message* msg2 = |
132 new Message(port1, 0, AllocMsg("msg2"), Message::kNormalPriority); | 151 new Message(port1, 0, AllocMsg(str2), strlen(str2) + 1, |
| 152 Message::kNormalPriority); |
133 queue.Enqueue(msg2); | 153 queue.Enqueue(msg2); |
134 EXPECT(queue_peer.HasMessage()); | 154 EXPECT(queue_peer.HasMessage()); |
135 | 155 |
136 queue.Flush(port1); | 156 queue.Flush(port1); |
137 | 157 |
138 // Queue is empty. | 158 // Queue is empty. |
139 EXPECT(!queue_peer.HasMessage()); | 159 EXPECT(!queue_peer.HasMessage()); |
140 // msg1 and msg2 are already deleted by Flush. | 160 // msg1 and msg2 are already deleted by Flush. |
141 } | 161 } |
142 | 162 |
143 | 163 |
144 TEST_CASE(MessageQueue_Flush_EmptyQueue) { | 164 TEST_CASE(MessageQueue_Flush_EmptyQueue) { |
145 MessageQueue queue; | 165 MessageQueue queue; |
146 MessageQueueTestPeer queue_peer(&queue); | 166 MessageQueueTestPeer queue_peer(&queue); |
147 Dart_Port port1 = 1; | 167 Dart_Port port1 = 1; |
148 | 168 |
149 EXPECT(!queue_peer.HasMessage()); | 169 EXPECT(!queue_peer.HasMessage()); |
150 queue.Flush(port1); | 170 queue.Flush(port1); |
151 | 171 |
152 // Queue is still empty. | 172 // Queue is still empty. |
153 EXPECT(!queue_peer.HasMessage()); | 173 EXPECT(!queue_peer.HasMessage()); |
154 } | 174 } |
155 | 175 |
156 } // namespace dart | 176 } // namespace dart |
OLD | NEW |