def testMapIntoSameTimeline(self): m = Modulo(self.MAX_VALUE, self.INVALID_VALUE) x_list = [ -self.HALF_MAX_VALUE, -self.HALF_MAX_VALUE + 1, -self.HALF_MAX_VALUE + 3, -self.HALF_MAX_VALUE / 2, -self.HALF_MAX_VALUE / 4, -self.HALF_MAX_VALUE / 8, -256, -100, -10, -3, -1, 0, 1, 3, 10, 100, 256, self.HALF_MAX_VALUE / 8, self.HALF_MAX_VALUE / 4, self.HALF_MAX_VALUE / 2, self.HALF_MAX_VALUE - 3, self.HALF_MAX_VALUE - 1, self.HALF_MAX_VALUE, ] ref_list = [ 0, 1, 3, 10, 100, 256, self.MAX_VALUE/16-1, self.MAX_VALUE/16, self.MAX_VALUE/16+1, self.MAX_VALUE/8-1, self.MAX_VALUE/8, self.MAX_VALUE/8+1, self.MAX_VALUE/4-1, self.MAX_VALUE/4, self.MAX_VALUE/4+1, self.MAX_VALUE/2-1, self.MAX_VALUE/2, self.MAX_VALUE/2+1, self.MAX_VALUE-1, self.MAX_VALUE, ] for r in ref_list: for x in x_list: v = m.wrap_correction(r + x) self.assertGreaterEqual(v, 0) self.assertLessEqual(v, self.MAX_VALUE) mapped_value = m.map_into_same_timeline(v, r) self.assertEqual(r + x, mapped_value)
def testWrapCorrection(self): """A test of the wrap_correction() method.""" m = Modulo(self.MAX_VALUE, self.INVALID_VALUE) self.assertEqual(0, m.wrap_correction(0)) self.assertEqual(90000, m.wrap_correction(90000)) self.assertEqual(0, m.wrap_correction(self.MAX_VALUE + 1)) self.assertEqual(90000, m.wrap_correction(self.MAX_VALUE + 1 + 90000)) self.assertEqual(self.MAX_VALUE, m.wrap_correction(self.INVALID_VALUE)) self.assertEqual(self.MAX_VALUE - 1, m.wrap_correction(-2)) self.assertEqual(0, m.wrap_correction(2 * (self.MAX_VALUE + 1) + 0)) self.assertEqual(1, m.wrap_correction(3 * (self.MAX_VALUE + 1) + 1)) self.assertEqual(0, m.wrap_correction(-self.MAX_VALUE - 1)) self.assertEqual(0, m.wrap_correction(-(2 * (self.MAX_VALUE + 1)) + 0)) self.assertEqual(1, m.wrap_correction(-(3 * (self.MAX_VALUE + 1)) + 1))
def testSub(self): m = Modulo(self.MAX_VALUE, self.INVALID_VALUE) self.assertEqual(0, m.sub(0, 0)) self.assertEqual(23, m.sub(123, 100)) self.assertEqual(-23, m.sub(100, 123)) self.assertEqual(123456, m.sub(self.MAX_VALUE, self.MAX_VALUE - 123456)) self.assertEqual(-123456, m.sub(self.MAX_VALUE - 123456, self.MAX_VALUE)) self.assertEqual( 9, m.sub(m.wrap_correction(self.MAX_VALUE + 9), self.MAX_VALUE)) self.assertEqual( -9, m.sub(self.MAX_VALUE, m.wrap_correction(self.MAX_VALUE + 9))) self.assertEqual(16234, m.sub(15000, m.wrap_correction(-1234))) self.assertEqual(self.HALF_MAX_VALUE, m.sub(self.HALF_MAX_VALUE, 0)) self.assertEqual(-self.HALF_MAX_VALUE, m.sub(0, self.HALF_MAX_VALUE)) self.assertEqual(self.INVALID_VALUE, m.sub(self.INVALID_VALUE, 100)) self.assertEqual(self.INVALID_VALUE, m.sub(100, self.INVALID_VALUE)) self.assertEqual(self.INVALID_VALUE, m.sub(self.INVALID_VALUE, self.INVALID_VALUE))