示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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)
示例#7
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)
示例#8
0
    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)
示例#9
0
    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)
示例#10
0
    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)
示例#11
0
    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)
示例#12
0
    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)
示例#13
0
    def test_sum_property(self):
        tester = TimedRunningSum(3)

        self.assertEqual(tester.sum, 0)
示例#14
0
    def test_create(self):
        tester = TimedRunningSum(target_elapsed_time=3)

        self.assertEqual(tester._target_elapsed_time, 3)