@@ -434,8 +434,39 @@ TEST(MathExtras, IsShiftedInt) {
434434 EXPECT_FALSE ((isShiftedInt<6 , 10 >(int64_t (1 ) << 15 )));
435435}
436436
437- template <typename T>
438- class OverflowTest : public ::testing::Test { };
437+ TEST (MathExtras, DivideCeilSigned) {
438+ EXPECT_EQ (divideCeilSigned (14 , 3 ), 5 );
439+ EXPECT_EQ (divideCeilSigned (15 , 3 ), 5 );
440+ EXPECT_EQ (divideCeilSigned (14 , -3 ), -4 );
441+ EXPECT_EQ (divideCeilSigned (-14 , -3 ), 5 );
442+ EXPECT_EQ (divideCeilSigned (-14 , 3 ), -4 );
443+ EXPECT_EQ (divideCeilSigned (-15 , 3 ), -5 );
444+ EXPECT_EQ (divideCeilSigned (0 , 3 ), 0 );
445+ EXPECT_EQ (divideCeilSigned (0 , -3 ), 0 );
446+ }
447+
448+ TEST (MathExtras, DivideFloorSigned) {
449+ EXPECT_EQ (divideFloorSigned (14 , 3 ), 4 );
450+ EXPECT_EQ (divideFloorSigned (15 , 3 ), 5 );
451+ EXPECT_EQ (divideFloorSigned (14 , -3 ), -5 );
452+ EXPECT_EQ (divideFloorSigned (-14 , -3 ), 4 );
453+ EXPECT_EQ (divideFloorSigned (-14 , 3 ), -5 );
454+ EXPECT_EQ (divideFloorSigned (-15 , 3 ), -5 );
455+ EXPECT_EQ (divideFloorSigned (0 , 3 ), 0 );
456+ EXPECT_EQ (divideFloorSigned (0 , -3 ), 0 );
457+ }
458+
459+ TEST (MathExtras, Mod) {
460+ EXPECT_EQ (mod (1 , 14 ), 1 );
461+ EXPECT_EQ (mod (-1 , 14 ), 13 );
462+ EXPECT_EQ (mod (14 , 3 ), 2 );
463+ EXPECT_EQ (mod (15 , 3 ), 0 );
464+ EXPECT_EQ (mod (-14 , 3 ), 1 );
465+ EXPECT_EQ (mod (-15 , 3 ), 0 );
466+ EXPECT_EQ (mod (0 , 3 ), 0 );
467+ }
468+
469+ template <typename T> class OverflowTest : public ::testing::Test {};
439470
440471using OverflowTestTypes = ::testing::Types<signed char , short , int , long ,
441472 long long >;
@@ -560,5 +591,4 @@ TYPED_TEST(OverflowTest, MulResultZero) {
560591 EXPECT_FALSE (MulOverflow<TypeParam>(0 , -5 , Result));
561592 EXPECT_EQ (Result, TypeParam (0 ));
562593}
563-
564594} // namespace
0 commit comments