From 15518f119c695bd8174081e0eae73ecf18effab4 Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Thu, 23 Oct 2025 12:45:41 +0100 Subject: [PATCH] Tests: Add some basic public suffix tests --- Tests/LibURL/CMakeLists.txt | 1 + Tests/LibURL/TestPublicSuffix.cpp | 49 +++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 Tests/LibURL/TestPublicSuffix.cpp diff --git a/Tests/LibURL/CMakeLists.txt b/Tests/LibURL/CMakeLists.txt index 3fc65de05a..a56a497063 100644 --- a/Tests/LibURL/CMakeLists.txt +++ b/Tests/LibURL/CMakeLists.txt @@ -1,6 +1,7 @@ set(URL_TEST_SOURCES TestURL.cpp TestURLPatternConstructorStringParser.cpp + TestPublicSuffix.cpp ) foreach(source IN LISTS URL_TEST_SOURCES) diff --git a/Tests/LibURL/TestPublicSuffix.cpp b/Tests/LibURL/TestPublicSuffix.cpp new file mode 100644 index 0000000000..d3c0327ce5 --- /dev/null +++ b/Tests/LibURL/TestPublicSuffix.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2025, Tim Ledbetter + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +#include + +TEST_CASE(is_public_suffix) +{ + auto* public_suffix_data = URL::PublicSuffixData::the(); + + EXPECT(public_suffix_data->is_public_suffix("com"sv)); + EXPECT(public_suffix_data->is_public_suffix("com.br"sv)); + + EXPECT(!public_suffix_data->is_public_suffix(""sv)); + EXPECT(!public_suffix_data->is_public_suffix("."sv)); + EXPECT(!public_suffix_data->is_public_suffix(".."sv)); + EXPECT(!public_suffix_data->is_public_suffix("/"sv)); + EXPECT(!public_suffix_data->is_public_suffix("not-a-public-suffix.com"sv)); + EXPECT(!public_suffix_data->is_public_suffix("com."sv)); + EXPECT(!public_suffix_data->is_public_suffix("com/"sv)); + EXPECT(!public_suffix_data->is_public_suffix("/com"sv)); + EXPECT(!public_suffix_data->is_public_suffix("not-a-public-suffix"sv)); + EXPECT(!public_suffix_data->is_public_suffix(" com"sv)); + EXPECT(!public_suffix_data->is_public_suffix("com "sv)); +} + +TEST_CASE(get_public_suffix) +{ + auto* public_suffix_data = URL::PublicSuffixData::the(); + + EXPECT_EQ(public_suffix_data->get_public_suffix(""sv), OptionalNone {}); + EXPECT_EQ(public_suffix_data->get_public_suffix("."sv), OptionalNone {}); + EXPECT_EQ(public_suffix_data->get_public_suffix(".."sv), OptionalNone {}); + EXPECT_EQ(public_suffix_data->get_public_suffix(" "sv), OptionalNone {}); + EXPECT_EQ(public_suffix_data->get_public_suffix("/"sv), OptionalNone {}); + EXPECT_EQ(public_suffix_data->get_public_suffix("not-a-public-suffix"sv), OptionalNone {}); + + EXPECT_EQ(public_suffix_data->get_public_suffix("com"sv), "com"sv); + EXPECT_EQ(public_suffix_data->get_public_suffix("not-a-public-suffix.com"sv), "com"sv); + EXPECT_EQ(public_suffix_data->get_public_suffix("com."sv), "com"sv); + EXPECT_EQ(public_suffix_data->get_public_suffix(".com."sv), "com"sv); + EXPECT_EQ(public_suffix_data->get_public_suffix("..com."sv), "com"sv); + EXPECT_EQ(public_suffix_data->get_public_suffix("com.br"sv), "com.br"sv); + EXPECT_EQ(public_suffix_data->get_public_suffix("not-a-public-suffix.com.br"sv), "com.br"sv); +}