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