|
|
@@ -122,25 +122,33 @@ TEST(BigDecimalTest, MultiplicationFromNonDropToDroppedScale) {
|
|
|
EXPECT_THAT((G*F).to_string(), "1000000000");
|
|
|
}
|
|
|
|
|
|
-TEST(BigDecimalTest, DivideHigherScaleByLowerScale) {
|
|
|
- math::bigdecimal a("1", 2);
|
|
|
- math::bigdecimal b("1", 1);
|
|
|
+TEST(BigDecimalTest, DivideHigherScaleByLowerScaleGainsDigits) {
|
|
|
+ math::bigdecimal a("1", 1);
|
|
|
+ math::bigdecimal b("1", 0);
|
|
|
EXPECT_THAT((a/b).to_string(), "1.0");
|
|
|
}
|
|
|
|
|
|
-TEST(BigDecimalTest, DivideLowerScaleByHigherScale) {
|
|
|
- math::bigdecimal a("10", 1);
|
|
|
- math::bigdecimal b("1", 2);
|
|
|
- EXPECT_THAT((a/b).to_string(), "10");
|
|
|
+TEST(BigDecimalTest, DivideLowerScaleByHigherScaleLosesDigits) {
|
|
|
+ math::bigdecimal a("1", 0);
|
|
|
+ math::bigdecimal b("1", 1);
|
|
|
+ EXPECT_THAT((a/b).to_string(), "0");
|
|
|
}
|
|
|
|
|
|
-TEST(BigDecimalTest, DivideByLargerNumberGivesDecimalIfScaleAllows) {
|
|
|
+TEST(BigDecimalTest, DivideRemainderLostWhenLackingScale) {
|
|
|
math::bigdecimal a("1" , 0);
|
|
|
- math::bigdecimal b("1" , 1);
|
|
|
math::bigdecimal c("10", 0);
|
|
|
- math::bigdecimal d("10", -1);
|
|
|
EXPECT_THAT((a/c).to_string(), "0");
|
|
|
+}
|
|
|
+
|
|
|
+TEST(BigDecimalTest, DivideRemainderKeptWithScale) {
|
|
|
+ math::bigdecimal a("1" , 1);
|
|
|
+ math::bigdecimal d("10", 0);
|
|
|
EXPECT_THAT((a/d).to_string(), "0.1");
|
|
|
- EXPECT_THAT((b/c).to_string(), "0.1");
|
|
|
+}
|
|
|
+
|
|
|
+TEST(BigDecimalTest, NewDivisionScaleIsDifferenceOfComponentScales) {
|
|
|
+ math::bigdecimal b("1" , 1);
|
|
|
+ math::bigdecimal d("10", -1);
|
|
|
+ EXPECT_THAT((b/d).scale(), b.scale() - d.scale());
|
|
|
EXPECT_THAT((b/d).to_string(), "0.10");
|
|
|
}
|