예제 #1
0
  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)
예제 #2
0
 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))
예제 #3
0
 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))