OLD | NEW |
| (Empty) |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "mojo/edk/system/message_in_transit_queue.h" | |
6 | |
7 #include "mojo/edk/system/message_in_transit_test_utils.h" | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 | |
10 namespace mojo { | |
11 namespace edk { | |
12 namespace { | |
13 | |
14 TEST(MessageInTransitQueueTest, Basic) { | |
15 MessageInTransitQueue queue; | |
16 EXPECT_TRUE(queue.IsEmpty()); | |
17 | |
18 queue.AddMessage(test::MakeTestMessage(1)); | |
19 ASSERT_FALSE(queue.IsEmpty()); | |
20 EXPECT_EQ(1u, queue.Size()); | |
21 | |
22 test::VerifyTestMessage(queue.PeekMessage(), 1); | |
23 ASSERT_FALSE(queue.IsEmpty()); | |
24 EXPECT_EQ(1u, queue.Size()); | |
25 | |
26 queue.AddMessage(test::MakeTestMessage(2)); | |
27 queue.AddMessage(test::MakeTestMessage(3)); | |
28 ASSERT_FALSE(queue.IsEmpty()); | |
29 EXPECT_EQ(3u, queue.Size()); | |
30 | |
31 test::VerifyTestMessage(queue.GetMessage().get(), 1); | |
32 ASSERT_FALSE(queue.IsEmpty()); | |
33 EXPECT_EQ(2u, queue.Size()); | |
34 | |
35 test::VerifyTestMessage(queue.PeekMessage(), 2); | |
36 ASSERT_FALSE(queue.IsEmpty()); | |
37 EXPECT_EQ(2u, queue.Size()); | |
38 | |
39 queue.DiscardMessage(); | |
40 ASSERT_FALSE(queue.IsEmpty()); | |
41 EXPECT_EQ(1u, queue.Size()); | |
42 | |
43 test::VerifyTestMessage(queue.GetMessage().get(), 3); | |
44 EXPECT_TRUE(queue.IsEmpty()); | |
45 EXPECT_EQ(0u, queue.Size()); | |
46 | |
47 queue.AddMessage(test::MakeTestMessage(4)); | |
48 ASSERT_FALSE(queue.IsEmpty()); | |
49 EXPECT_EQ(1u, queue.Size()); | |
50 | |
51 test::VerifyTestMessage(queue.PeekMessage(), 4); | |
52 ASSERT_FALSE(queue.IsEmpty()); | |
53 EXPECT_EQ(1u, queue.Size()); | |
54 | |
55 queue.Clear(); | |
56 EXPECT_TRUE(queue.IsEmpty()); | |
57 EXPECT_EQ(0u, queue.Size()); | |
58 } | |
59 | |
60 TEST(MessageInTransitQueueTest, Swap) { | |
61 MessageInTransitQueue queue1; | |
62 MessageInTransitQueue queue2; | |
63 | |
64 queue1.AddMessage(test::MakeTestMessage(1)); | |
65 queue1.AddMessage(test::MakeTestMessage(2)); | |
66 queue1.AddMessage(test::MakeTestMessage(3)); | |
67 EXPECT_EQ(3u, queue1.Size()); | |
68 | |
69 queue2.AddMessage(test::MakeTestMessage(4)); | |
70 queue2.AddMessage(test::MakeTestMessage(5)); | |
71 EXPECT_EQ(2u, queue2.Size()); | |
72 | |
73 queue1.Swap(&queue2); | |
74 EXPECT_EQ(2u, queue1.Size()); | |
75 EXPECT_EQ(3u, queue2.Size()); | |
76 test::VerifyTestMessage(queue1.GetMessage().get(), 4); | |
77 test::VerifyTestMessage(queue1.GetMessage().get(), 5); | |
78 EXPECT_TRUE(queue1.IsEmpty()); | |
79 | |
80 queue1.Swap(&queue2); | |
81 EXPECT_TRUE(queue2.IsEmpty()); | |
82 | |
83 test::VerifyTestMessage(queue1.GetMessage().get(), 1); | |
84 test::VerifyTestMessage(queue1.GetMessage().get(), 2); | |
85 test::VerifyTestMessage(queue1.GetMessage().get(), 3); | |
86 EXPECT_TRUE(queue1.IsEmpty()); | |
87 } | |
88 | |
89 } // namespace | |
90 } // namespace edk | |
91 } // namespace mojo | |
OLD | NEW |