Browse Source

Breaking up final test in BigDecimalTest

Sam Jaffe 7 years ago
parent
commit
3afa6a13dd
1 changed files with 19 additions and 11 deletions
  1. 19 11
      test/bigdecimal_test.cpp

+ 19 - 11
test/bigdecimal_test.cpp

@@ -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");
 }