Adding unit test for different versions of division.
authorTim King <taking@cs.nyu.edu>
Sat, 15 Dec 2012 02:04:41 +0000 (21:04 -0500)
committerTim King <taking@cs.nyu.edu>
Sat, 15 Dec 2012 02:04:41 +0000 (21:04 -0500)
test/unit/util/integer_black.h

index d2f697637d86875509978fbf4fa157d9d296c999..2f9998066cd26472c4fac7baafa90d6b8d9c1a40 100644 (file)
@@ -387,4 +387,79 @@ public:
       TS_ASSERT_EQUALS(Integer(i).length(), internalLength(i));
     }
   }
+
+  void testEuclideanDivision() {
+    Integer q, r;
+
+    Integer::euclidianQR(q, r, 1, 4);
+    TS_ASSERT_EQUALS( q, Integer(0));
+    TS_ASSERT_EQUALS( r, Integer(1));
+
+
+    Integer::euclidianQR(q, r, 1, -4);
+    TS_ASSERT_EQUALS( q, Integer(0));
+    TS_ASSERT_EQUALS( r, Integer(1));
+
+    Integer::euclidianQR(q, r, -1, 4);
+    TS_ASSERT_EQUALS( q, Integer(-1));
+    TS_ASSERT_EQUALS( r, Integer(3));
+
+    Integer::euclidianQR(q,r, -1, -4);
+    TS_ASSERT_EQUALS( q, Integer(1));
+    TS_ASSERT_EQUALS( r, Integer(3));
+
+    Integer::euclidianQR(q,r, 5, 4);
+    TS_ASSERT_EQUALS( q, Integer(1));
+    TS_ASSERT_EQUALS( r, Integer(1));
+
+    Integer::euclidianQR(q,r, 5, -4);
+    TS_ASSERT_EQUALS( q, Integer(-1));
+    TS_ASSERT_EQUALS( r, Integer(1));
+
+    Integer::euclidianQR(q,r, -5, 4);
+    TS_ASSERT_EQUALS( q, Integer(-2));
+    TS_ASSERT_EQUALS( r, Integer(3));
+
+    Integer::euclidianQR(q,r, -5, -4);
+    TS_ASSERT_EQUALS( q, Integer(2));
+    TS_ASSERT_EQUALS( r, Integer(3));
+
+  }
+  void testFloorDivision() {
+    Integer q, r;
+
+    Integer::floorQR(q, r, 1, 4);
+    TS_ASSERT_EQUALS( q, Integer(0));
+    TS_ASSERT_EQUALS( r, Integer(1));
+
+
+    Integer::floorQR(q, r, 1, -4);
+    TS_ASSERT_EQUALS( q, Integer(-1));
+    TS_ASSERT_EQUALS( r, Integer(-3));
+
+    Integer::floorQR(q, r, -1, 4);
+    TS_ASSERT_EQUALS( q, Integer(-1));
+    TS_ASSERT_EQUALS( r, Integer(3));
+
+    Integer::floorQR(q,r, -1, -4);
+    TS_ASSERT_EQUALS( q, Integer(0));
+    TS_ASSERT_EQUALS( r, Integer(-1));
+
+    Integer::floorQR(q,r, 5, 4);
+    TS_ASSERT_EQUALS( q, Integer(1));
+    TS_ASSERT_EQUALS( r, Integer(1));
+
+    Integer::floorQR(q,r, 5, -4);
+    TS_ASSERT_EQUALS( q, Integer(-2));
+    TS_ASSERT_EQUALS( r, Integer(-3));
+
+    Integer::floorQR(q,r, -5, 4);
+    TS_ASSERT_EQUALS( q, Integer(-2));
+    TS_ASSERT_EQUALS( r, Integer(3));
+
+    Integer::floorQR(q,r, -5, -4);
+    TS_ASSERT_EQUALS( q, Integer(1));
+    TS_ASSERT_EQUALS( r, Integer(-1));
+
+  }
 };