diff options
Diffstat (limited to 'mojo/edk/system/message_in_transit_queue_unittest.cc')
-rw-r--r-- | mojo/edk/system/message_in_transit_queue_unittest.cc | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/mojo/edk/system/message_in_transit_queue_unittest.cc b/mojo/edk/system/message_in_transit_queue_unittest.cc new file mode 100644 index 0000000..7e715d2 --- /dev/null +++ b/mojo/edk/system/message_in_transit_queue_unittest.cc @@ -0,0 +1,91 @@ +// Copyright 2015 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "mojo/edk/system/message_in_transit_queue.h" + +#include "mojo/edk/system/message_in_transit_test_utils.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace mojo { +namespace edk { +namespace { + +TEST(MessageInTransitQueueTest, Basic) { + MessageInTransitQueue queue; + EXPECT_TRUE(queue.IsEmpty()); + + queue.AddMessage(test::MakeTestMessage(1)); + ASSERT_FALSE(queue.IsEmpty()); + EXPECT_EQ(1u, queue.Size()); + + test::VerifyTestMessage(queue.PeekMessage(), 1); + ASSERT_FALSE(queue.IsEmpty()); + EXPECT_EQ(1u, queue.Size()); + + queue.AddMessage(test::MakeTestMessage(2)); + queue.AddMessage(test::MakeTestMessage(3)); + ASSERT_FALSE(queue.IsEmpty()); + EXPECT_EQ(3u, queue.Size()); + + test::VerifyTestMessage(queue.GetMessage().get(), 1); + ASSERT_FALSE(queue.IsEmpty()); + EXPECT_EQ(2u, queue.Size()); + + test::VerifyTestMessage(queue.PeekMessage(), 2); + ASSERT_FALSE(queue.IsEmpty()); + EXPECT_EQ(2u, queue.Size()); + + queue.DiscardMessage(); + ASSERT_FALSE(queue.IsEmpty()); + EXPECT_EQ(1u, queue.Size()); + + test::VerifyTestMessage(queue.GetMessage().get(), 3); + EXPECT_TRUE(queue.IsEmpty()); + EXPECT_EQ(0u, queue.Size()); + + queue.AddMessage(test::MakeTestMessage(4)); + ASSERT_FALSE(queue.IsEmpty()); + EXPECT_EQ(1u, queue.Size()); + + test::VerifyTestMessage(queue.PeekMessage(), 4); + ASSERT_FALSE(queue.IsEmpty()); + EXPECT_EQ(1u, queue.Size()); + + queue.Clear(); + EXPECT_TRUE(queue.IsEmpty()); + EXPECT_EQ(0u, queue.Size()); +} + +TEST(MessageInTransitQueueTest, Swap) { + MessageInTransitQueue queue1; + MessageInTransitQueue queue2; + + queue1.AddMessage(test::MakeTestMessage(1)); + queue1.AddMessage(test::MakeTestMessage(2)); + queue1.AddMessage(test::MakeTestMessage(3)); + EXPECT_EQ(3u, queue1.Size()); + + queue2.AddMessage(test::MakeTestMessage(4)); + queue2.AddMessage(test::MakeTestMessage(5)); + EXPECT_EQ(2u, queue2.Size()); + + queue1.Swap(&queue2); + EXPECT_EQ(2u, queue1.Size()); + EXPECT_EQ(3u, queue2.Size()); + test::VerifyTestMessage(queue1.GetMessage().get(), 4); + test::VerifyTestMessage(queue1.GetMessage().get(), 5); + EXPECT_TRUE(queue1.IsEmpty()); + + queue1.Swap(&queue2); + EXPECT_TRUE(queue2.IsEmpty()); + + test::VerifyTestMessage(queue1.GetMessage().get(), 1); + test::VerifyTestMessage(queue1.GetMessage().get(), 2); + test::VerifyTestMessage(queue1.GetMessage().get(), 3); + EXPECT_TRUE(queue1.IsEmpty()); +} + +} // namespace +} // namespace edk +} // namespace mojo |