| 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 |