@@ -459,15 +459,37 @@ TEST(MathExtras, DivideNearest) {
459
459
EXPECT_EQ (divideNearest (14 , 3 ), 5u );
460
460
EXPECT_EQ (divideNearest (15 , 3 ), 5u );
461
461
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 );
462
467
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 );
464
476
}
465
477
466
478
TEST (MathExtras, DivideCeil) {
467
479
EXPECT_EQ (divideCeil (14 , 3 ), 5u );
468
480
EXPECT_EQ (divideCeil (15 , 3 ), 5u );
469
481
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 ());
471
493
472
494
EXPECT_EQ (divideCeilSigned (14 , 3 ), 5 );
473
495
EXPECT_EQ (divideCeilSigned (15 , 3 ), 5 );
@@ -479,8 +501,14 @@ TEST(MathExtras, DivideCeil) {
479
501
EXPECT_EQ (divideCeilSigned (0 , -3 ), 0 );
480
502
EXPECT_EQ (divideCeilSigned (std::numeric_limits<int32_t >::max (), 2 ),
481
503
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 );
482
506
EXPECT_EQ (divideCeilSigned (std::numeric_limits<int32_t >::max (), -2 ),
483
507
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 ());
484
512
}
485
513
486
514
TEST (MathExtras, DivideFloorSigned) {
@@ -494,8 +522,14 @@ TEST(MathExtras, DivideFloorSigned) {
494
522
EXPECT_EQ (divideFloorSigned (0 , -3 ), 0 );
495
523
EXPECT_EQ (divideFloorSigned (std::numeric_limits<int32_t >::max (), 2 ),
496
524
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 );
497
527
EXPECT_EQ (divideFloorSigned (std::numeric_limits<int32_t >::max (), -2 ),
498
528
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 ());
499
533
}
500
534
501
535
TEST (MathExtras, Mod) {
0 commit comments