xref: /aosp_15_r20/external/openscreen/osp/impl/receiver_list_unittest.cc (revision 3f982cf4871df8771c9d4abe6e9a6f8d829b2736)
1 // Copyright 2018 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 "osp/impl/receiver_list.h"
6 
7 #include "gtest/gtest.h"
8 #include "platform/base/error.h"
9 
10 namespace openscreen {
11 namespace osp {
12 
TEST(ReceiverListTest,AddReceivers)13 TEST(ReceiverListTest, AddReceivers) {
14   ReceiverList list;
15 
16   EXPECT_TRUE(list.receivers().empty());
17 
18   const ServiceInfo receiver1{
19       "id1", "name1", 1, {{192, 168, 1, 10}, 12345}, {}};
20   list.OnReceiverAdded(receiver1);
21 
22   ASSERT_EQ(1u, list.receivers().size());
23   EXPECT_EQ(receiver1, list.receivers()[0]);
24 
25   const ServiceInfo receiver2{
26       "id2", "name2", 1, {{192, 168, 1, 11}, 12345}, {}};
27   list.OnReceiverAdded(receiver2);
28 
29   ASSERT_EQ(2u, list.receivers().size());
30   EXPECT_EQ(receiver1, list.receivers()[0]);
31   EXPECT_EQ(receiver2, list.receivers()[1]);
32 
33   list.OnReceiverAdded(receiver1);
34 
35   // No duplicate checking.
36   ASSERT_EQ(3u, list.receivers().size());
37   EXPECT_EQ(receiver1, list.receivers()[0]);
38   EXPECT_EQ(receiver2, list.receivers()[1]);
39   EXPECT_EQ(receiver1, list.receivers()[2]);
40 }
41 
TEST(ReceiverListTest,ChangeReceivers)42 TEST(ReceiverListTest, ChangeReceivers) {
43   ReceiverList list;
44   const ServiceInfo receiver1{
45       "id1", "name1", 1, {{192, 168, 1, 10}, 12345}, {}};
46   const ServiceInfo receiver2{
47       "id2", "name2", 1, {{192, 168, 1, 11}, 12345}, {}};
48   const ServiceInfo receiver3{
49       "id3", "name3", 1, {{192, 168, 1, 12}, 12345}, {}};
50   const ServiceInfo receiver1_alt_name{
51       "id1", "name1 alt", 1, {{192, 168, 1, 10}, 12345}, {}};
52   list.OnReceiverAdded(receiver1);
53   list.OnReceiverAdded(receiver2);
54 
55   EXPECT_TRUE(list.OnReceiverChanged(receiver1_alt_name).ok());
56   EXPECT_FALSE(list.OnReceiverChanged(receiver3).ok());
57 
58   ASSERT_EQ(2u, list.receivers().size());
59   EXPECT_EQ(receiver1_alt_name, list.receivers()[0]);
60   EXPECT_EQ(receiver2, list.receivers()[1]);
61 }
62 
TEST(ReceiverListTest,RemoveReceivers)63 TEST(ReceiverListTest, RemoveReceivers) {
64   ReceiverList list;
65   const ServiceInfo receiver1{
66       "id1", "name1", 1, {{192, 168, 1, 10}, 12345}, {}};
67   const ServiceInfo receiver2{
68       "id2", "name2", 1, {{192, 168, 1, 11}, 12345}, {}};
69   EXPECT_FALSE(list.OnReceiverRemoved(receiver1).ok());
70   list.OnReceiverAdded(receiver1);
71   EXPECT_FALSE(list.OnReceiverRemoved(receiver2).ok());
72   list.OnReceiverAdded(receiver2);
73   list.OnReceiverAdded(receiver1);
74 
75   EXPECT_TRUE(list.OnReceiverRemoved(receiver1).ok());
76 
77   ASSERT_EQ(1u, list.receivers().size());
78   EXPECT_EQ(receiver2, list.receivers()[0]);
79 }
80 
TEST(ReceiverListTest,RemoveAllReceivers)81 TEST(ReceiverListTest, RemoveAllReceivers) {
82   ReceiverList list;
83   const ServiceInfo receiver1{
84       "id1", "name1", 1, {{192, 168, 1, 10}, 12345}, {}};
85   const ServiceInfo receiver2{
86       "id2", "name2", 1, {{192, 168, 1, 11}, 12345}, {}};
87   EXPECT_FALSE(list.OnAllReceiversRemoved().ok());
88   list.OnReceiverAdded(receiver1);
89   list.OnReceiverAdded(receiver2);
90 
91   EXPECT_TRUE(list.OnAllReceiversRemoved().ok());
92   ASSERT_TRUE(list.receivers().empty());
93 }
94 
95 }  // namespace osp
96 }  // namespace openscreen
97