From 90c070cb1d90d77ba461017e609b9f8ee6326de1 Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Sun, 21 Feb 2021 22:09:25 +0100 Subject: [PATCH] AK+Tests: Test Checked for main functionality --- AK/Tests/TestChecked.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/AK/Tests/TestChecked.cpp b/AK/Tests/TestChecked.cpp index 20ea0032dc..85abb9e530 100644 --- a/AK/Tests/TestChecked.cpp +++ b/AK/Tests/TestChecked.cpp @@ -95,6 +95,29 @@ TEST_CASE(operator_arith) EXPECT_EQ(b / a, 28); } +TEST_CASE(detects_signed_overflow) +{ + EXPECT(!(Checked(0x40000000) + Checked(0x3fffffff)).has_overflow()); + EXPECT((Checked(0x40000000) + Checked(0x40000000)).has_overflow()); + EXPECT(!(Checked(-0x40000000) + Checked(-0x40000000)).has_overflow()); + EXPECT((Checked(-0x40000001) + Checked(-0x40000000)).has_overflow()); + + EXPECT(!(Checked(0x40000000) - Checked(-0x3fffffff)).has_overflow()); + EXPECT((Checked(0x40000000) - Checked(-0x40000000)).has_overflow()); + EXPECT(!(Checked(-0x40000000) - Checked(0x40000000)).has_overflow()); + EXPECT((Checked(-0x40000000) - Checked(0x40000001)).has_overflow()); + + EXPECT(!(Checked(0x4000000000000000) + Checked(0x3fffffffffffffff)).has_overflow()); + EXPECT((Checked(0x4000000000000000) + Checked(0x4000000000000000)).has_overflow()); + EXPECT(!(Checked(-0x4000000000000000) + Checked(-0x4000000000000000)).has_overflow()); + EXPECT((Checked(-0x4000000000000001) + Checked(-0x4000000000000000)).has_overflow()); + + EXPECT(!(Checked(0x4000000000000000) - Checked(-0x3fffffffffffffff)).has_overflow()); + EXPECT((Checked(0x4000000000000000) - Checked(-0x4000000000000000)).has_overflow()); + EXPECT(!(Checked(-0x4000000000000000) - Checked(0x4000000000000000)).has_overflow()); + EXPECT((Checked(-0x4000000000000000) - Checked(0x4000000000000001)).has_overflow()); +} + TEST_CASE(should_constexpr_default_construct) { constexpr Checked checked_value {};