From 9af6e5b6488b5d5d56b55b349486467cacf27085 Mon Sep 17 00:00:00 2001 From: eyalz800 Date: Fri, 5 Nov 2021 02:57:38 -0400 Subject: [PATCH] Added sanity check for separate translation unit. --- test/src/sanity_integer_divide.cpp | 7 +---- .../src/sanity_integer_divide_separate_tu.cpp | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 test/src/sanity_integer_divide_separate_tu.cpp diff --git a/test/src/sanity_integer_divide.cpp b/test/src/sanity_integer_divide.cpp index 35ddc19..7dfcc15 100644 --- a/test/src/sanity_integer_divide.cpp +++ b/test/src/sanity_integer_divide.cpp @@ -1,8 +1,5 @@ #include "test.h" -namespace -{ - zpp::throwing integer_divide(int x, int y) { if (y == 0) { @@ -21,7 +18,7 @@ zpp::throwing integer_divide_equals(int x, int y, int z) co_return false; } -int test_integer_divide_equals(int x, int y, int z) +static int test_integer_divide_equals(int x, int y, int z) { return zpp::try_catch([&]() -> zpp::throwing { if (co_await integer_divide_equals(x, y, z)) { @@ -38,8 +35,6 @@ int test_integer_divide_equals(int x, int y, int z) }); } -} - TEST(sanity_integer_divide, integer_divide) { EXPECT_EQ(test_integer_divide_equals(4, 2, 2), 1); diff --git a/test/src/sanity_integer_divide_separate_tu.cpp b/test/src/sanity_integer_divide_separate_tu.cpp new file mode 100644 index 0000000..f66e478 --- /dev/null +++ b/test/src/sanity_integer_divide_separate_tu.cpp @@ -0,0 +1,29 @@ +#include "test.h" + +zpp::throwing integer_divide_equals(int x, int y, int z); + +static int test_integer_divide_equals(int x, int y, int z) +{ + return zpp::try_catch([&]() -> zpp::throwing { + if (co_await integer_divide_equals(x, y, z)) { + co_return 1; + } else { + co_return 2; + } + }, [&](const std::overflow_error &) { + return 3; + }, [&](const std::range_error &) { + return 4; + }, [&]() { + return 5; + }); +} + +TEST(sanity_integer_divide, integer_divide_separate_tu) +{ + EXPECT_EQ(test_integer_divide_equals(4, 2, 2), 1); + EXPECT_EQ(test_integer_divide_equals(4, 2, 1), 2); + EXPECT_EQ(test_integer_divide_equals(4, 0, 2), 3); + EXPECT_EQ(test_integer_divide_equals(4, 3, 2), 4); +} +