From b6472204e58d84047101d67cf602446203126d3a Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Sat, 6 Mar 2021 23:09:56 +0100 Subject: [PATCH] AK+Tests: Also test Checked<> with unsigned As expected, Checked works as intended. However, we didn't have a test for that, so I added one. See also 90c070cb1d90d77ba461017e609b9f8ee6326de1. --- AK/Tests/TestChecked.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/AK/Tests/TestChecked.cpp b/AK/Tests/TestChecked.cpp index 85abb9e530..3c28dddf36 100644 --- a/AK/Tests/TestChecked.cpp +++ b/AK/Tests/TestChecked.cpp @@ -118,6 +118,27 @@ TEST_CASE(detects_signed_overflow) EXPECT((Checked(-0x4000000000000000) - Checked(0x4000000000000001)).has_overflow()); } +TEST_CASE(detects_unsigned_overflow) +{ + EXPECT(!(Checked(0x40000000) + Checked(0x3fffffff)).has_overflow()); + EXPECT(!(Checked(0x40000000) + Checked(0x40000000)).has_overflow()); + EXPECT(!(Checked(0xf0000000) + Checked(0x0fffffff)).has_overflow()); + EXPECT((Checked(0xf0000000) + Checked(0x10000000)).has_overflow()); + + EXPECT(!(Checked(0x40000000) - Checked(0x3fffffff)).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(0xf000000000000000) + Checked(0x0fffffffffffffff)).has_overflow()); + EXPECT((Checked(0xf000000000000000) + Checked(0x1000000000000000)).has_overflow()); + + EXPECT(!(Checked(0x4000000000000000) - Checked(0x3fffffffffffffff)).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 {};