1 // Copyright 2019 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 "discovery/dnssd/public/dns_sd_instance_endpoint.h"
6
7 #include "discovery/dnssd/public/dns_sd_instance.h"
8 #include "gmock/gmock.h"
9 #include "gtest/gtest.h"
10
11 namespace openscreen {
12 namespace discovery {
13
TEST(DnsSdInstanceEndpointTests,ComparisonTests)14 TEST(DnsSdInstanceEndpointTests, ComparisonTests) {
15 constexpr NetworkInterfaceIndex kIndex0 = 0;
16 constexpr NetworkInterfaceIndex kIndex1 = 1;
17 DnsSdInstance instance("instance", "_test._tcp", "local", {}, 80);
18 DnsSdInstance instance2("instance", "_test._tcp", "local", {}, 79);
19 IPEndpoint ep1{{192, 168, 80, 32}, 80};
20 IPEndpoint ep2{{192, 168, 80, 32}, 79};
21 IPEndpoint ep3{{192, 168, 80, 33}, 79};
22 DnsSdInstanceEndpoint endpoint1(instance, kIndex1, ep1);
23 DnsSdInstanceEndpoint endpoint2("instance", "_test._tcp", "local", {},
24 kIndex1, ep1);
25 DnsSdInstanceEndpoint endpoint3(instance2, kIndex1, ep2);
26 DnsSdInstanceEndpoint endpoint4(instance2, kIndex0, ep2);
27 DnsSdInstanceEndpoint endpoint5(instance2, kIndex1, ep3);
28 DnsSdInstanceEndpoint endpoint6("instance", "_test._tcp", "local", {},
29 kIndex1, ep1, "foo", "bar");
30 DnsSdInstanceEndpoint endpoint7("instance", "_test._tcp", "local", {},
31 kIndex1, ep1, "foo", "foobar");
32 DnsSdInstanceEndpoint endpoint8("instance", "_test._tcp", "local", {},
33 kIndex1, ep1, "foobar");
34
35 EXPECT_EQ(static_cast<DnsSdInstance>(endpoint1),
36 static_cast<DnsSdInstance>(endpoint2));
37 EXPECT_EQ(endpoint1, endpoint2);
38 EXPECT_GE(endpoint1, endpoint3);
39 EXPECT_GE(endpoint1, endpoint4);
40 EXPECT_LE(endpoint1, endpoint5);
41 EXPECT_LE(endpoint1, endpoint6);
42 EXPECT_LE(endpoint1, endpoint7);
43 EXPECT_LE(endpoint1, endpoint8);
44
45 EXPECT_GE(endpoint3, endpoint4);
46 EXPECT_LE(endpoint3, endpoint5);
47
48 EXPECT_LE(endpoint4, endpoint5);
49
50 EXPECT_LE(endpoint6, endpoint7);
51 EXPECT_GE(endpoint6, endpoint8);
52 EXPECT_GE(endpoint7, endpoint8);
53 }
54
TEST(DnsSdInstanceEndpointTests,Constructors)55 TEST(DnsSdInstanceEndpointTests, Constructors) {
56 constexpr NetworkInterfaceIndex kIndex = 0;
57 std::vector<std::string> subtypes{"foo", "bar", "foobar"};
58 IPEndpoint endpoint1{{192, 168, 12, 21}, 80};
59 IPEndpoint endpoint2{{227, 0, 0, 1}, 80};
60 DnsSdInstance instance("instance", "_test._tcp", "local", {}, 80, subtypes);
61
62 DnsSdInstanceEndpoint ep1(instance, kIndex, endpoint1, endpoint2);
63 DnsSdInstanceEndpoint ep2(instance, kIndex,
64 std::vector<IPEndpoint>{endpoint1, endpoint2});
65 DnsSdInstanceEndpoint ep3("instance", "_test._tcp", "local", {}, kIndex,
66 endpoint1, endpoint2, "foo", "bar", "foobar");
67 DnsSdInstanceEndpoint ep4("instance", "_test._tcp", "local", {}, kIndex,
68 std::vector<IPEndpoint>{endpoint1, endpoint2},
69 subtypes);
70
71 EXPECT_EQ(ep1, ep2);
72 EXPECT_EQ(ep1, ep3);
73 EXPECT_EQ(ep1, ep4);
74 }
75
76 } // namespace discovery
77 } // namespace openscreen
78