@@ -413,26 +413,6 @@ TEST(i32, OverflowingAdd) {
413
413
(Tuple<i32, bool >::with (0_i32, true )));
414
414
}
415
415
416
- // ** Signed only.
417
- TEST (i32, OverflowingAddUnsigned) {
418
- constexpr auto a = (1_i32).overflowing_add_unsigned (3u );
419
- EXPECT_EQ (a, (Tuple<i32, bool >::with (4_i32, false )));
420
-
421
- EXPECT_EQ ((-1_i32).overflowing_add_unsigned (2u ),
422
- (Tuple<i32, bool >::with (1_i32, false )));
423
- EXPECT_EQ (
424
- (i32::MIN ()).overflowing_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
425
- (Tuple<i32, bool >::with (i32::MAX (), false )));
426
- EXPECT_EQ ((i32::MIN () + 1_i32)
427
- .overflowing_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
428
- (Tuple<i32, bool >::with (i32::MIN (), true )));
429
- EXPECT_EQ ((i32::MIN () + 1_i32)
430
- .overflowing_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX - 1 ),
431
- (Tuple<i32, bool >::with (i32::MAX (), false )));
432
- EXPECT_EQ ((i32::MAX () - 2_i32).overflowing_add_unsigned (3u ),
433
- (Tuple<i32, bool >::with (i32::MIN (), true )));
434
- }
435
-
436
416
TEST (i32, SaturatingAdd) {
437
417
constexpr auto a = (1_i32).saturating_add (3_i32);
438
418
EXPECT_EQ (a, 4_i32);
@@ -1899,6 +1879,78 @@ TEST(i32, ToNeBytes) {
1899
1879
}
1900
1880
}
1901
1881
1882
+ // ** Signed only.
1883
+ TEST (i32, CheckedAddUnsigned) {
1884
+ constexpr auto a = (1_i32).checked_add_unsigned (3u );
1885
+ EXPECT_EQ (a, Option<i32>::some (4_i32));
1886
+
1887
+ EXPECT_EQ ((-1_i32).checked_add_unsigned (2u ), Option<i32>::some (1_i32));
1888
+ EXPECT_EQ ((i32::MIN ()).checked_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
1889
+ Option<i32>::some (i32::MAX ()));
1890
+ EXPECT_EQ ((i32::MIN () + 1_i32)
1891
+ .checked_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
1892
+ None);
1893
+ EXPECT_EQ ((i32::MIN () + 1_i32)
1894
+ .checked_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX - 1 ),
1895
+ Option<i32>::some (i32::MAX ()));
1896
+ EXPECT_EQ ((i32::MAX () - 2_i32).checked_add_unsigned (3u ), None);
1897
+ }
1898
+
1899
+ // ** Signed only.
1900
+ TEST (i32, OverflowingAddUnsigned) {
1901
+ constexpr auto a = (1_i32).overflowing_add_unsigned (3u );
1902
+ EXPECT_EQ (a, (Tuple<i32, bool >::with (4_i32, false )));
1903
+
1904
+ EXPECT_EQ ((-1_i32).overflowing_add_unsigned (2u ),
1905
+ (Tuple<i32, bool >::with (1_i32, false )));
1906
+ EXPECT_EQ (
1907
+ (i32::MIN ()).overflowing_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
1908
+ (Tuple<i32, bool >::with (i32::MAX (), false )));
1909
+ EXPECT_EQ ((i32::MIN () + 1_i32)
1910
+ .overflowing_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
1911
+ (Tuple<i32, bool >::with (i32::MIN (), true )));
1912
+ EXPECT_EQ ((i32::MIN () + 1_i32)
1913
+ .overflowing_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX - 1 ),
1914
+ (Tuple<i32, bool >::with (i32::MAX (), false )));
1915
+ EXPECT_EQ ((i32::MAX () - 2_i32).overflowing_add_unsigned (3u ),
1916
+ (Tuple<i32, bool >::with (i32::MIN (), true )));
1917
+ }
1918
+
1919
+ // ** Signed only.
1920
+ TEST (i32, SaturatingAddUnsigned) {
1921
+ constexpr auto a = (1_i32).saturating_add_unsigned (3u );
1922
+ EXPECT_EQ (a, 4_i32);
1923
+
1924
+ EXPECT_EQ ((-1_i32).saturating_add_unsigned (2u ), 1_i32);
1925
+ EXPECT_EQ (
1926
+ (i32::MIN ()).saturating_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
1927
+ i32::MAX ());
1928
+ EXPECT_EQ ((i32::MIN () + 1_i32)
1929
+ .saturating_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
1930
+ i32::MAX ());
1931
+ EXPECT_EQ ((i32::MIN () + 1_i32)
1932
+ .saturating_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX - 1 ),
1933
+ i32::MAX ());
1934
+ EXPECT_EQ ((i32::MAX () - 2_i32).saturating_add_unsigned (3u ), i32::MAX ());
1935
+ }
1936
+
1937
+ // ** Signed only.
1938
+ TEST (i32, WrappingAddUnsigned) {
1939
+ constexpr auto a = (1_i32).wrapping_add_unsigned (3u );
1940
+ EXPECT_EQ (a, 4_i32);
1941
+
1942
+ EXPECT_EQ ((-1_i32).wrapping_add_unsigned (2u ), 1_i32);
1943
+ EXPECT_EQ ((i32::MIN ()).wrapping_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
1944
+ i32::MAX ());
1945
+ EXPECT_EQ ((i32::MIN () + 1_i32)
1946
+ .wrapping_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX),
1947
+ i32::MIN ());
1948
+ EXPECT_EQ ((i32::MIN () + 1_i32)
1949
+ .wrapping_add_unsigned (/* TODO: u32::MAX() */ UINT_MAX - 1 ),
1950
+ i32::MAX ());
1951
+ EXPECT_EQ ((i32::MAX () - 2_i32).wrapping_add_unsigned (3u ), i32::MIN ());
1952
+ }
1953
+
1902
1954
TEST (i32, From) {
1903
1955
static_assert (sus::concepts::from::From<i32, u32>);
1904
1956
0 commit comments