aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/src/equality_comparison_suite.cpp63
1 files changed, 53 insertions, 10 deletions
diff --git a/test/src/equality_comparison_suite.cpp b/test/src/equality_comparison_suite.cpp
index 64c7521..0789ae8 100644
--- a/test/src/equality_comparison_suite.cpp
+++ b/test/src/equality_comparison_suite.cpp
@@ -16,7 +16,7 @@ inline namespace basic_equality_comparsion_tests
auto two_instances_of_the_same_new__type_with_the_same_value_compare_equal() -> void
{
- using type_alias = nt::new_type<int, struct eq_test_tag_1>;
+ using type_alias = nt::new_type<int, struct tag>;
auto constexpr lhs = type_alias{42};
auto constexpr rhs = type_alias{42};
@@ -26,7 +26,7 @@ inline namespace basic_equality_comparsion_tests
auto two_instances_of_the_same_new__type_with_the_same_value_do_not_compare_not_equal() -> void
{
- using type_alias = nt::new_type<int, struct eq_test_tag_1>;
+ using type_alias = nt::new_type<int, struct tag>;
auto constexpr lhs = type_alias{42};
auto constexpr rhs = type_alias{42};
@@ -36,7 +36,7 @@ inline namespace basic_equality_comparsion_tests
auto two_instances_of_the_same_new__type_with_differing_values_do_compare_not_equal() -> void
{
- using type_alias = nt::new_type<int, struct eq_test_tag_1>;
+ using type_alias = nt::new_type<int, struct tag>;
auto constexpr lhs = type_alias{42};
auto constexpr rhs = type_alias{43};
@@ -46,7 +46,7 @@ inline namespace basic_equality_comparsion_tests
auto two_instances_of_the_same_new__type_with_differing_values_do_not_compare_equal() -> void
{
- using type_alias = nt::new_type<int, struct eq_test_tag_1>;
+ using type_alias = nt::new_type<int, struct tag>;
auto constexpr lhs = type_alias{42};
auto constexpr rhs = type_alias{43};
@@ -61,7 +61,7 @@ inline namespace equality_comparsion_noexcept_tests
auto equality_comparison_on_a_new__type_is_noexcept_if_the_base_type_is_noexcept_comparable() -> void
{
- using type_alias = nt::new_type<int, struct eq_test_tag_2>;
+ using type_alias = nt::new_type<int, struct tag>;
static_assert(noexcept(std::declval<int &>() == std::declval<int &>()), "Sanity Check");
ASSERT(noexcept(std::declval<type_alias &>() == std::declval<type_alias &>()));
}
@@ -76,14 +76,14 @@ inline namespace equality_comparsion_noexcept_tests
}
};
- using type_alias = nt::new_type<strange_type, struct eq_test_tag_3>;
+ using type_alias = nt::new_type<strange_type, struct tag>;
static_assert(!noexcept(std::declval<strange_type &>() == std::declval<strange_type &>()), "Sanity Check");
ASSERT(!noexcept(std::declval<type_alias &>() == std::declval<type_alias &>()));
}
auto inequality_comparison_on_a_new__type_is_noexcept_if_the_base_type_is_noexcept_comparable() -> void
{
- using type_alias = nt::new_type<int, struct eq_test_tag_4>;
+ using type_alias = nt::new_type<int, struct tag>;
static_assert(noexcept(std::declval<int &>() != std::declval<int &>()), "Sanity Check");
ASSERT(noexcept(std::declval<type_alias &>() != std::declval<type_alias &>()));
}
@@ -98,7 +98,7 @@ inline namespace equality_comparsion_noexcept_tests
}
};
- using type_alias = nt::new_type<strange_type, struct eq_test_tag_5>;
+ using type_alias = nt::new_type<strange_type, struct tag>;
static_assert(!noexcept(std::declval<strange_type &>() != std::declval<strange_type &>()), "Sanity Check");
ASSERT(!noexcept(std::declval<type_alias &>() != std::declval<type_alias &>()));
}
@@ -110,18 +110,55 @@ inline namespace equality_comparison_return_type_tests
auto equality_comparsion_of_two_new__type_instances_returns_bool() -> void
{
- using type_alias = nt::new_type<int, struct eq_test_tag_6>;
+ using type_alias = nt::new_type<int, struct tag>;
ASSERT((std::is_same_v<bool, decltype(std::declval<type_alias &>() == std::declval<type_alias &>())>));
}
auto inequality_comparsion_of_two_new__type_instances_returns_bool() -> void
{
- using type_alias = nt::new_type<int, struct eq_test_tag_7>;
+ using type_alias = nt::new_type<int, struct tag>;
ASSERT((std::is_same_v<bool, decltype(std::declval<type_alias &>() != std::declval<type_alias &>())>));
}
} // namespace equality_comparison_return_type_tests
+inline namespace base_type_equality_comparison_tests
+{
+
+ auto an_instance_of_a_new__type_compares_equal_to_an_instance_of_its_base_type_with_the_same_value() -> void
+ {
+ using type_alias = nt::new_type<int, struct tag, deriving(nt::EqBase)>;
+ auto lhs = type_alias{42};
+ auto rhs = 42;
+ ASSERT_EQUAL(lhs, rhs);
+ }
+
+ auto an_instance_of_the_base_type_of_a_new__type_compares_equal_to_an_instance_of_the_new__type_with_the_same_value() -> void
+ {
+ using type_alias = nt::new_type<int, struct tag, deriving(nt::EqBase)>;
+ auto lhs = 42;
+ auto rhs = type_alias{42};
+ ASSERT_EQUAL(lhs, rhs);
+ }
+
+ auto an_instance_of_a_new__type_compares_not_equal_to_an_instance_of_its_base_type_with_a_differing_value() -> void
+ {
+ using type_alias = nt::new_type<int, struct tag, deriving(nt::EqBase)>;
+ auto lhs = type_alias{42};
+ auto rhs = 43;
+ ASSERT(lhs != rhs);
+ }
+
+ auto an_instance_of_the_base_type_of_a_new__type_compares_not_equal_to_an_instance_of_the_new__type_with_a_differing_value() -> void
+ {
+ using type_alias = nt::new_type<int, struct tag, deriving(nt::EqBase)>;
+ auto lhs = 43;
+ auto rhs = type_alias{42};
+ ASSERT(lhs != rhs);
+ }
+
+} // namespace base_type_equality_comparison_tests
+
auto equality_comparison_suite() -> std::pair<cute::suite, std::string>
{
return {{
@@ -140,6 +177,12 @@ auto equality_comparison_suite() -> std::pair<cute::suite, std::string>
// Equality Comparison Return Type Tests
KAWAII(equality_comparsion_of_two_new__type_instances_returns_bool),
KAWAII(inequality_comparsion_of_two_new__type_instances_returns_bool),
+
+ // Base-type Equality Comparison Tests
+ KAWAII(an_instance_of_a_new__type_compares_equal_to_an_instance_of_its_base_type_with_the_same_value),
+ KAWAII(an_instance_of_the_base_type_of_a_new__type_compares_equal_to_an_instance_of_the_new__type_with_the_same_value),
+ KAWAII(an_instance_of_a_new__type_compares_not_equal_to_an_instance_of_its_base_type_with_a_differing_value),
+ KAWAII(an_instance_of_the_base_type_of_a_new__type_compares_not_equal_to_an_instance_of_the_new__type_with_a_differing_value),
},
"Equality Comparison Tests"};
} \ No newline at end of file