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 {};