// Copyright 2018 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 "osp/impl/receiver_list.h" #include "gtest/gtest.h" #include "platform/base/error.h" namespace openscreen { namespace osp { TEST(ReceiverListTest, AddReceivers) { ReceiverList list; EXPECT_TRUE(list.receivers().empty()); const ServiceInfo receiver1{ "id1", "name1", 1, {{192, 168, 1, 10}, 12345}, {}}; list.OnReceiverAdded(receiver1); ASSERT_EQ(1u, list.receivers().size()); EXPECT_EQ(receiver1, list.receivers()[0]); const ServiceInfo receiver2{ "id2", "name2", 1, {{192, 168, 1, 11}, 12345}, {}}; list.OnReceiverAdded(receiver2); ASSERT_EQ(2u, list.receivers().size()); EXPECT_EQ(receiver1, list.receivers()[0]); EXPECT_EQ(receiver2, list.receivers()[1]); list.OnReceiverAdded(receiver1); // No duplicate checking. ASSERT_EQ(3u, list.receivers().size()); EXPECT_EQ(receiver1, list.receivers()[0]); EXPECT_EQ(receiver2, list.receivers()[1]); EXPECT_EQ(receiver1, list.receivers()[2]); } TEST(ReceiverListTest, ChangeReceivers) { ReceiverList list; const ServiceInfo receiver1{ "id1", "name1", 1, {{192, 168, 1, 10}, 12345}, {}}; const ServiceInfo receiver2{ "id2", "name2", 1, {{192, 168, 1, 11}, 12345}, {}}; const ServiceInfo receiver3{ "id3", "name3", 1, {{192, 168, 1, 12}, 12345}, {}}; const ServiceInfo receiver1_alt_name{ "id1", "name1 alt", 1, {{192, 168, 1, 10}, 12345}, {}}; list.OnReceiverAdded(receiver1); list.OnReceiverAdded(receiver2); EXPECT_TRUE(list.OnReceiverChanged(receiver1_alt_name).ok()); EXPECT_FALSE(list.OnReceiverChanged(receiver3).ok()); ASSERT_EQ(2u, list.receivers().size()); EXPECT_EQ(receiver1_alt_name, list.receivers()[0]); EXPECT_EQ(receiver2, list.receivers()[1]); } TEST(ReceiverListTest, RemoveReceivers) { ReceiverList list; const ServiceInfo receiver1{ "id1", "name1", 1, {{192, 168, 1, 10}, 12345}, {}}; const ServiceInfo receiver2{ "id2", "name2", 1, {{192, 168, 1, 11}, 12345}, {}}; EXPECT_FALSE(list.OnReceiverRemoved(receiver1).ok()); list.OnReceiverAdded(receiver1); EXPECT_FALSE(list.OnReceiverRemoved(receiver2).ok()); list.OnReceiverAdded(receiver2); list.OnReceiverAdded(receiver1); EXPECT_TRUE(list.OnReceiverRemoved(receiver1).ok()); ASSERT_EQ(1u, list.receivers().size()); EXPECT_EQ(receiver2, list.receivers()[0]); } TEST(ReceiverListTest, RemoveAllReceivers) { ReceiverList list; const ServiceInfo receiver1{ "id1", "name1", 1, {{192, 168, 1, 10}, 12345}, {}}; const ServiceInfo receiver2{ "id2", "name2", 1, {{192, 168, 1, 11}, 12345}, {}}; EXPECT_FALSE(list.OnAllReceiversRemoved().ok()); list.OnReceiverAdded(receiver1); list.OnReceiverAdded(receiver2); EXPECT_TRUE(list.OnAllReceiversRemoved().ok()); ASSERT_TRUE(list.receivers().empty()); } } // namespace osp } // namespace openscreen