def test_get_most_recents(self):
     my = MyRollingList()
     my.add(1)
     my.add(2)
     my.add(3)
     self.assertEqual([3, 2, 1], my.get_most_recents(3))
     self.assertEqual([3, 2], my.get_most_recents(2))
     self.assertEqual([3], my.get_most_recents(1))
Exemplo n.º 2
0
def save_price(val: float, is_time_to_save: bool, key: str, bucket: str, initial_size: int = 500) -> MyRollingList:
    update_dynamo_table(val, "last_price")
    round_val = float(Decimal(val).quantize(Decimal("0.01")))
    rolling_average = _load_from_s3(bucket, key)
    if is_time_to_save:
        if rolling_average is None:
            rolling_average = MyRollingList(initial_size)
        rolling_average.add(round_val)
        save_to_s3(bucket, key, rolling_average)
        ma_10 = indicator_util.calculate_simple_moving_average(rolling_average.get_most_recents(10))
        ma_12 = indicator_util.calculate_simple_moving_average(rolling_average.get_most_recents(12))
        ma_50 = indicator_util.calculate_simple_moving_average(rolling_average.get_most_recents(50))
        ma_200 = indicator_util.calculate_simple_moving_average(rolling_average.get_most_recents(200))
        update_dynamo_table(ma_10, "10_day_ma")
        update_dynamo_table(ma_12, "12_day_ma")
        update_dynamo_table(ma_50, "50_day_ma")
        update_dynamo_table(ma_200, "200_day_ma")
    return rolling_average
 def test_adding_list_in_order(self):
     my_list = [1, 2, 3]
     my = MyRollingList()
     my.add_all_in_order(my_list)
     self.assertEqual(my_list, my.get_most_recents(3))
     self.assertEqual(my.size(), 3)
 def test_adding_list_in_reverse(self):
     my_list = [1, 2, 3]
     my = MyRollingList()
     my.add_all_in_reverse(my_list)
     self.assertEqual([3, 2, 1], my.get_most_recents(3))
 def test_clear(self):
     my = MyRollingList()
     my.add(15)
     self.assertEqual(1, my.size())
     my.clear()
     self.assertEqual(0, my.size())
 def test_get_all(self):
     my = MyRollingList()
     my.add(15)
     self.assertEqual([15], my.get_all())
 def test_asking_more_return_negative_one(self):
     my = MyRollingList()
     my.add(15)
     with self.assertLogs(level='INFO') as cm:
         self.assertEqual(-1, my.get_most_recents(2))
         self.assertIn("ERROR:root:Attempting to get 2 of values with current size of 1", cm.output)
 def test_after_add_size_is_one(self):
     my = MyRollingList()
     my.add(15)
     self.assertEqual(1, my.size())
     self.assertEqual(15, my.get_most_recents(1)[0])
 def test_bounded_size(self):
     my = MyRollingList(max=2)
     my.add(3)
     my.add(2)
     my.add(1)
     self.assertEqual([1, 2], my.get_all())
 def test_empty_returns_size_zero(self):
     self.assertEqual(0, MyRollingList().size())