def test_append(self): tester = TimedRunningSum(10.0) tester.append(1, 1) self.assertEqual(len(tester), 1) self.assertEqual(tester._time_buffer[0], 1) self.assertEqual(tester._sample_buffer[0], 1) self.assertEqual(tester.sum, 1) tester.append(2, 2) self.assertEqual(len(tester), 2) self.assertEqual(tester._time_buffer[0], 1) self.assertEqual(tester._sample_buffer[0], 1) self.assertEqual(tester._time_buffer[1], 2) self.assertEqual(tester._sample_buffer[1], 2) self.assertEqual(tester.sum, 3) tester.append(15, 3.14) # Will now have 2 elements because one older sample is kept even if it is out of range self.assertEqual(len(tester), 2) self.assertEqual(tester._time_buffer[0], 2) self.assertEqual(tester._sample_buffer[0], 2) self.assertEqual(tester._time_buffer[1], 15) self.assertEqual(tester._sample_buffer[1], 3.14) self.assertAlmostEqual(tester.sum, 5.14)
def testBackwardsTime(self): timed_buffer = TimedRunningSum() timed_buffer.append(1, 1) timed_buffer.append(1, 0) with self.assertRaises(ValueError): timed_buffer.append(0, 5)
def test_change_target_time(self): timed_buffer = TimedRunningSum(10) for ix in range(10): timed_buffer.append(ix, ix**2) timed_buffer.target_elapsed_time = 5 self.assertEqual(len(timed_buffer), 7) self.assertEqual(timed_buffer.oldest_sample, 9) self.assertEqual(timed_buffer.newest_sample, 81)
def test_length(self): timed_buffer = TimedRunningSum() self.assertEqual(len(timed_buffer), 0) timed_buffer.append(1, 1) self.assertEqual(len(timed_buffer), 1) timed_buffer.append(2, 2) timed_buffer.append(5, 10) self.assertEqual(len(timed_buffer), 3)
def test_get_elapsed_time(self): timed_buffer = TimedRunningSum() self.assertEqual(timed_buffer.elapsed_time, 0) timed_buffer.append(1, 10) self.assertEqual(timed_buffer.elapsed_time, 0) timed_buffer.append(2, 12) self.assertEqual(timed_buffer.elapsed_time, 1) timed_buffer.append(7, 8) self.assertEqual(timed_buffer.elapsed_time, 6)
def test_reset(self): tester = TimedRunningSum() for ix in range(10): tester.append(ix, ix**2) self.assertEqual(len(tester), 10) tester.reset() self.assertEqual(len(tester._time_buffer), 0) self.assertEqual(len(tester._sample_buffer), 0) self.assertEqual(len(tester), 0) self.assertEqual(tester.sum, 0)
def test_get_last_time(self): tester = TimedRunningSum(10) self.assertEqual(tester.newest_time, 0) tester.append(1, 2) self.assertEqual(tester.newest_time, 1) tester.append(10, 8) self.assertEqual(tester.newest_time, 10) tester.append(11.1, 15) self.assertEqual(tester.newest_time, 11.1)
def test_get_newest(self): tester = TimedRunningSum(10) self.assertIsNone(tester.newest_sample) tester.append(1, 2) self.assertEqual(tester.newest_sample, 2) tester.append(10, 4) self.assertEqual(tester.newest_sample, 4) tester.append(11.1, 15) self.assertEqual(tester.newest_sample, 15)
def test_get_oldest_time(self): tester = TimedRunningSum(10) self.assertEqual(tester.oldest_time, 0) tester.append(1, 2) self.assertEqual(tester.oldest_time, 1) tester.append(10, 8) self.assertEqual(tester.oldest_time, 1) tester.append(11.1, 15) # No eviction self.assertEqual(tester.oldest_time, 1) tester.append(21, 15) # eviction self.assertEqual(tester.oldest_time, 10)
def test_popleft(self): tester = TimedRunningSum(10) tester.append(1, 1) self.assertEqual(len(tester), 1) self.assertEqual(tester._time_buffer[0], 1) self.assertEqual(tester._sample_buffer[0], 1) self.assertAlmostEqual(tester.sum, 1) tester.append(2, 3.14) self.assertAlmostEqual(tester.sum, 4.14) tester.popleft() self.assertEqual(len(tester), 1) self.assertAlmostEqual(tester.sum, 3.14)
def test_remove_old_samples(self): tester = TimedRunningSum(10) tester._time_buffer.extend([1, 2, 13]) tester._sample_buffer.extend([4, 5, 6]) self.assertEqual(tester._time_buffer[0], 1) self.assertEqual(tester._time_buffer[1], 2) self.assertEqual(tester._time_buffer[2], 13) self.assertEqual(tester._sample_buffer[0], 4) self.assertEqual(tester._sample_buffer[1], 5) self.assertEqual(tester._sample_buffer[2], 6) tester.remove_old_samples() self.assertEqual(len(tester), 2) self.assertEqual(tester._time_buffer[0], 2) self.assertEqual(tester._sample_buffer[0], 5) self.assertEqual(tester._time_buffer[1], 13) self.assertEqual(tester._sample_buffer[1], 6)
def test_get_oldest(self): tester = TimedRunningSum(10) self.assertIsNone(tester.oldest_sample) tester.append(1, 2) self.assertEqual(tester.oldest_sample, 2) tester.append(10, 4) self.assertEqual(tester.oldest_sample, 2) tester.append(11.1, 15) # No evictions yet because one older sample is kept self.assertEqual(tester.oldest_sample, 2) tester.append( 11.2, 32) # Still no eviction: 10 to 11.2 is within the window of 10 self.assertEqual(tester.oldest_sample, 2) tester.append( 21, 32 ) # Now there should be an eviction but the (10, 4) will still be there self.assertEqual(tester.oldest_sample, 4)
def test_sum_property(self): tester = TimedRunningSum(3) self.assertEqual(tester.sum, 0)
def test_create(self): tester = TimedRunningSum(target_elapsed_time=3) self.assertEqual(tester._target_elapsed_time, 3)