blob: b9ee3ac8b6283cc409737107a7db6bdcc88ec14b [file] [log] [blame]
// Copyright 2019 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 "discovery/dnssd/public/dns_sd_instance_endpoint.h"
#include "discovery/dnssd/public/dns_sd_instance.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace openscreen {
namespace discovery {
TEST(DnsSdInstanceEndpointTests, ComparisonTests) {
constexpr NetworkInterfaceIndex kIndex0 = 0;
constexpr NetworkInterfaceIndex kIndex1 = 1;
DnsSdInstance instance("instance", "_test._tcp", "local", {}, 80);
DnsSdInstance instance2("instance", "_test._tcp", "local", {}, 79);
IPEndpoint ep1{{192, 168, 80, 32}, 80};
IPEndpoint ep2{{192, 168, 80, 32}, 79};
IPEndpoint ep3{{192, 168, 80, 33}, 79};
DnsSdInstanceEndpoint endpoint1(instance, kIndex1, ep1);
DnsSdInstanceEndpoint endpoint2("instance", "_test._tcp", "local", {},
kIndex1, ep1);
DnsSdInstanceEndpoint endpoint3(instance2, kIndex1, ep2);
DnsSdInstanceEndpoint endpoint4(instance2, kIndex0, ep2);
DnsSdInstanceEndpoint endpoint5(instance2, kIndex1, ep3);
DnsSdInstanceEndpoint endpoint6("instance", "_test._tcp", "local", {},
kIndex1, ep1, "foo", "bar");
DnsSdInstanceEndpoint endpoint7("instance", "_test._tcp", "local", {},
kIndex1, ep1, "foo", "foobar");
DnsSdInstanceEndpoint endpoint8("instance", "_test._tcp", "local", {},
kIndex1, ep1, "foobar");
EXPECT_EQ(static_cast<DnsSdInstance>(endpoint1),
static_cast<DnsSdInstance>(endpoint2));
EXPECT_EQ(endpoint1, endpoint2);
EXPECT_GE(endpoint1, endpoint3);
EXPECT_GE(endpoint1, endpoint4);
EXPECT_LE(endpoint1, endpoint5);
EXPECT_LE(endpoint1, endpoint6);
EXPECT_LE(endpoint1, endpoint7);
EXPECT_LE(endpoint1, endpoint8);
EXPECT_GE(endpoint3, endpoint4);
EXPECT_LE(endpoint3, endpoint5);
EXPECT_LE(endpoint4, endpoint5);
EXPECT_LE(endpoint6, endpoint7);
EXPECT_GE(endpoint6, endpoint8);
EXPECT_GE(endpoint7, endpoint8);
}
TEST(DnsSdInstanceEndpointTests, Constructors) {
constexpr NetworkInterfaceIndex kIndex = 0;
std::vector<std::string> subtypes{"foo", "bar", "foobar"};
IPEndpoint endpoint1{{192, 168, 12, 21}, 80};
IPEndpoint endpoint2{{227, 0, 0, 1}, 80};
DnsSdInstance instance("instance", "_test._tcp", "local", {}, 80, subtypes);
DnsSdInstanceEndpoint ep1(instance, kIndex, endpoint1, endpoint2);
DnsSdInstanceEndpoint ep2(instance, kIndex,
std::vector<IPEndpoint>{endpoint1, endpoint2});
DnsSdInstanceEndpoint ep3("instance", "_test._tcp", "local", {}, kIndex,
endpoint1, endpoint2, "foo", "bar", "foobar");
DnsSdInstanceEndpoint ep4("instance", "_test._tcp", "local", {}, kIndex,
std::vector<IPEndpoint>{endpoint1, endpoint2},
subtypes);
EXPECT_EQ(ep1, ep2);
EXPECT_EQ(ep1, ep3);
EXPECT_EQ(ep1, ep4);
}
} // namespace discovery
} // namespace openscreen