@@ -459,15 +459,37 @@ TEST(MathExtras, DivideNearest) {
459459 EXPECT_EQ (divideNearest (14 , 3 ), 5u );
460460 EXPECT_EQ (divideNearest (15 , 3 ), 5u );
461461 EXPECT_EQ (divideNearest (0 , 3 ), 0u );
462+ EXPECT_EQ (divideNearest (5 , 4 ), 1u );
463+ EXPECT_EQ (divideNearest (6 , 4 ), 2u );
464+ EXPECT_EQ (divideNearest (3 , 1 ), 3u );
465+ EXPECT_EQ (divideNearest (3 , 6 ), 1u );
466+ EXPECT_EQ (divideNearest (3 , 7 ), 0u );
462467 EXPECT_EQ (divideNearest (std::numeric_limits<uint32_t >::max (), 2 ),
463- 2147483648u );
468+ std::numeric_limits<uint32_t >::max () / 2 + 1 );
469+ EXPECT_EQ (divideNearest (std::numeric_limits<uint64_t >::max (), 2 ),
470+ std::numeric_limits<uint64_t >::max () / 2 + 1 );
471+ EXPECT_EQ (divideNearest (std::numeric_limits<uint64_t >::max (), 1 ),
472+ std::numeric_limits<uint64_t >::max ());
473+ EXPECT_EQ (divideNearest (std::numeric_limits<uint64_t >::max () - 1 ,
474+ std::numeric_limits<uint64_t >::max ()),
475+ 1u );
464476}
465477
466478TEST (MathExtras, DivideCeil) {
467479 EXPECT_EQ (divideCeil (14 , 3 ), 5u );
468480 EXPECT_EQ (divideCeil (15 , 3 ), 5u );
469481 EXPECT_EQ (divideCeil (0 , 3 ), 0u );
470- EXPECT_EQ (divideCeil (std::numeric_limits<uint32_t >::max (), 2 ), 2147483648u );
482+ EXPECT_EQ (divideCeil (5 , 4 ), 2u );
483+ EXPECT_EQ (divideCeil (6 , 4 ), 2u );
484+ EXPECT_EQ (divideCeil (3 , 1 ), 3u );
485+ EXPECT_EQ (divideCeil (3 , 6 ), 1u );
486+ EXPECT_EQ (divideCeil (3 , 7 ), 1u );
487+ EXPECT_EQ (divideCeil (std::numeric_limits<uint32_t >::max (), 2 ),
488+ std::numeric_limits<uint32_t >::max () / 2 + 1 );
489+ EXPECT_EQ (divideCeil (std::numeric_limits<uint64_t >::max (), 2 ),
490+ std::numeric_limits<uint64_t >::max () / 2 + 1 );
491+ EXPECT_EQ (divideCeil (std::numeric_limits<uint64_t >::max (), 1 ),
492+ std::numeric_limits<uint64_t >::max ());
471493
472494 EXPECT_EQ (divideCeilSigned (14 , 3 ), 5 );
473495 EXPECT_EQ (divideCeilSigned (15 , 3 ), 5 );
@@ -479,8 +501,14 @@ TEST(MathExtras, DivideCeil) {
479501 EXPECT_EQ (divideCeilSigned (0 , -3 ), 0 );
480502 EXPECT_EQ (divideCeilSigned (std::numeric_limits<int32_t >::max (), 2 ),
481503 std::numeric_limits<int32_t >::max () / 2 + 1 );
504+ EXPECT_EQ (divideCeilSigned (std::numeric_limits<int64_t >::max (), 2 ),
505+ std::numeric_limits<int64_t >::max () / 2 + 1 );
482506 EXPECT_EQ (divideCeilSigned (std::numeric_limits<int32_t >::max (), -2 ),
483507 std::numeric_limits<int32_t >::min () / 2 + 1 );
508+ EXPECT_EQ (divideCeilSigned (std::numeric_limits<int64_t >::max (), -2 ),
509+ std::numeric_limits<int64_t >::min () / 2 + 1 );
510+ EXPECT_EQ (divideCeilSigned (std::numeric_limits<int64_t >::min (), 1 ),
511+ std::numeric_limits<int64_t >::min ());
484512}
485513
486514TEST (MathExtras, DivideFloorSigned) {
@@ -494,8 +522,14 @@ TEST(MathExtras, DivideFloorSigned) {
494522 EXPECT_EQ (divideFloorSigned (0 , -3 ), 0 );
495523 EXPECT_EQ (divideFloorSigned (std::numeric_limits<int32_t >::max (), 2 ),
496524 std::numeric_limits<int32_t >::max () / 2 );
525+ EXPECT_EQ (divideFloorSigned (std::numeric_limits<int64_t >::max (), 2 ),
526+ std::numeric_limits<int64_t >::max () / 2 );
497527 EXPECT_EQ (divideFloorSigned (std::numeric_limits<int32_t >::max (), -2 ),
498528 std::numeric_limits<int32_t >::min () / 2 );
529+ EXPECT_EQ (divideFloorSigned (std::numeric_limits<int64_t >::max (), -2 ),
530+ std::numeric_limits<int64_t >::min () / 2 );
531+ EXPECT_EQ (divideFloorSigned (std::numeric_limits<int64_t >::min (), 1 ),
532+ std::numeric_limits<int64_t >::min ());
499533}
500534
501535TEST (MathExtras, Mod) {
0 commit comments