class TestSimpleMovingAverage: def setup(self): # Fixture Setup self.sma = SimpleMovingAverage(10) def test_name_returns_expected_string(self): # Arrange, Act, Assert assert self.sma.name == "SimpleMovingAverage" def test_str_repr_returns_expected_string(self): # Arrange, Act, Assert assert str(self.sma) == "SimpleMovingAverage(10)" assert repr(self.sma) == "SimpleMovingAverage(10)" def test_period_returns_expected_value(self): # Arrange, Act, Assert assert self.sma.period == 10 def test_initialized_without_inputs_returns_false(self): # Arrange, Act, Assert assert self.sma.initialized is False def test_initialized_with_required_inputs_returns_true(self): # Arrange self.sma.update_raw(1.00000) self.sma.update_raw(2.00000) self.sma.update_raw(3.00000) self.sma.update_raw(4.00000) self.sma.update_raw(5.00000) self.sma.update_raw(6.00000) self.sma.update_raw(7.00000) self.sma.update_raw(8.00000) self.sma.update_raw(9.00000) self.sma.update_raw(10.00000) # Act, Assert assert self.sma.initialized is True assert self.sma.count == 10 assert self.sma.value == 5.5 def test_handle_quote_tick_updates_indicator(self): # Arrange indicator = SimpleMovingAverage(10, PriceType.MID) tick = TestDataStubs.quote_tick_5decimal(AUDUSD_SIM.id) # Act indicator.handle_quote_tick(tick) # Assert assert indicator.has_inputs assert indicator.value == 1.00002 def test_handle_trade_tick_updates_indicator(self): # Arrange indicator = SimpleMovingAverage(10) tick = TestDataStubs.trade_tick_5decimal(AUDUSD_SIM.id) # Act indicator.handle_trade_tick(tick) # Assert assert indicator.has_inputs assert indicator.value == 1.00001 def test_handle_bar_updates_indicator(self): # Arrange indicator = SimpleMovingAverage(10) bar = TestDataStubs.bar_5decimal() # Act indicator.handle_bar(bar) # Assert assert indicator.has_inputs assert indicator.value == 1.00003 def test_value_with_one_input_returns_expected_value(self): # Arrange self.sma.update_raw(1.00000) # Act, Assert assert self.sma.value == 1.0 def test_value_with_three_inputs_returns_expected_value(self): # Arrange self.sma.update_raw(1.00000) self.sma.update_raw(2.00000) self.sma.update_raw(3.00000) # Act, Assert assert self.sma.value == 2.0 def test_value_at_returns_expected_value(self): # Arrange self.sma.update_raw(1.00000) self.sma.update_raw(2.00000) self.sma.update_raw(3.00000) # Act, Assert assert self.sma.value == 2.0 def test_handle_quote_tick_updates_with_expected_value(self): # Arrange sma_for_ticks1 = SimpleMovingAverage(10, PriceType.ASK) sma_for_ticks2 = SimpleMovingAverage(10, PriceType.MID) sma_for_ticks3 = SimpleMovingAverage(10, PriceType.BID) tick = TestDataStubs.quote_tick_5decimal(AUDUSD_SIM.id) # Act sma_for_ticks1.handle_quote_tick(tick) sma_for_ticks2.handle_quote_tick(tick) sma_for_ticks3.handle_quote_tick(tick) # Assert assert sma_for_ticks1.has_inputs assert sma_for_ticks2.has_inputs assert sma_for_ticks3.has_inputs assert sma_for_ticks1.value == 1.00003 assert sma_for_ticks2.value == 1.00002 assert sma_for_ticks3.value == 1.00001 def test_handle_trade_tick_updates_with_expected_value(self): # Arrange sma_for_ticks = SimpleMovingAverage(10) tick = TestDataStubs.trade_tick_5decimal(AUDUSD_SIM.id) # Act sma_for_ticks.handle_trade_tick(tick) # Assert assert sma_for_ticks.has_inputs assert sma_for_ticks.value == 1.00001 def test_reset_successfully_returns_indicator_to_fresh_state(self): # Arrange for _i in range(1000): self.sma.update_raw(1.00000) # Act self.sma.reset() # Assert assert not self.sma.initialized assert self.sma.value == 0
class SimpleMovingAverageTests(unittest.TestCase): # Fixture Setup def setUp(self): # Arrange self.sma = SimpleMovingAverage(10) def test_name_returns_expected_name(self): # Act # Assert self.assertEqual("SimpleMovingAverage", self.sma.name) def test_str_returns_expected_string(self): # Act # Assert self.assertEqual("SimpleMovingAverage(10)", str(self.sma)) def test_repr_returns_expected_string(self): # Act # Assert self.assertTrue( repr(self.sma).startswith("<SimpleMovingAverage(10) object at")) self.assertTrue(repr(self.sma).endswith(">")) def test_period_returns_expected_value(self): # Act # Assert self.assertEqual(10, self.sma.period) def test_initialized_without_inputs_returns_false(self): # Act # Assert self.assertEqual(False, self.sma.initialized) def test_initialized_with_required_inputs_returns_true(self): # Arrange self.sma.update_raw(1.00000) self.sma.update_raw(2.00000) self.sma.update_raw(3.00000) self.sma.update_raw(4.00000) self.sma.update_raw(5.00000) self.sma.update_raw(6.00000) self.sma.update_raw(7.00000) self.sma.update_raw(8.00000) self.sma.update_raw(9.00000) self.sma.update_raw(10.00000) # Act # Assert self.assertEqual(True, self.sma.initialized) self.assertEqual(10, self.sma.count) self.assertEqual(5.5, self.sma.value) def test_value_with_one_input_returns_expected_value(self): # Arrange self.sma.update_raw(1.00000) # Act # Assert self.assertEqual(1.0, self.sma.value) def test_value_with_three_inputs_returns_expected_value(self): # Arrange self.sma.update_raw(1.00000) self.sma.update_raw(2.00000) self.sma.update_raw(3.00000) # Act # Assert self.assertEqual(2.0, self.sma.value) def test_value_at_returns_expected_value(self): # Arrange self.sma.update_raw(1.00000) self.sma.update_raw(2.00000) self.sma.update_raw(3.00000) # Act # Assert self.assertEqual(2.0, self.sma.value) def test_handle_quote_tick_updates_with_expected_value(self): # Arrange sma_for_ticks1 = SimpleMovingAverage(10, PriceType.ASK) sma_for_ticks2 = SimpleMovingAverage(10, PriceType.MID) sma_for_ticks3 = SimpleMovingAverage(10, PriceType.BID) tick = TestStubs.quote_tick_5decimal(AUDUSD_FXCM) # Act sma_for_ticks1.handle_quote_tick(tick) sma_for_ticks2.handle_quote_tick(tick) sma_for_ticks3.handle_quote_tick(tick) # Assert self.assertTrue(sma_for_ticks1.has_inputs) self.assertTrue(sma_for_ticks2.has_inputs) self.assertTrue(sma_for_ticks3.has_inputs) self.assertEqual(1.00003, sma_for_ticks1.value) self.assertEqual(1.00002, sma_for_ticks2.value) self.assertEqual(1.00001, sma_for_ticks3.value) def test_handle_trade_tick_updates_with_expected_value(self): # Arrange sma_for_ticks = SimpleMovingAverage(10) tick = TestStubs.trade_tick_5decimal(AUDUSD_FXCM) # Act sma_for_ticks.handle_trade_tick(tick) # Assert self.assertTrue(sma_for_ticks.has_inputs) self.assertEqual(1.00001, sma_for_ticks.value) def test_with_battery_signal(self): # Arrange tt = time.time() battery_signal = BatterySeries.create(length=1000000) output = [] # Act for point in battery_signal: self.sma.update_raw(point) output.append(self.sma.value) # Assert self.assertEqual(len(battery_signal), len(output)) print(self.sma.value) print(time.time() - tt)
class SimpleMovingAverageTests(unittest.TestCase): def setUp(self): # Fixture Setup self.sma = SimpleMovingAverage(10) def test_name_returns_expected_string(self): # Arrange # Act # Assert self.assertEqual("SimpleMovingAverage", self.sma.name) def test_str_repr_returns_expected_string(self): # Arrange # Act # Assert self.assertEqual("SimpleMovingAverage(10)", str(self.sma)) self.assertEqual("SimpleMovingAverage(10)", repr(self.sma)) def test_period_returns_expected_value(self): # Arrange # Act # Assert self.assertEqual(10, self.sma.period) def test_initialized_without_inputs_returns_false(self): # Arrange # Act # Assert self.assertEqual(False, self.sma.initialized) def test_initialized_with_required_inputs_returns_true(self): # Arrange self.sma.update_raw(1.00000) self.sma.update_raw(2.00000) self.sma.update_raw(3.00000) self.sma.update_raw(4.00000) self.sma.update_raw(5.00000) self.sma.update_raw(6.00000) self.sma.update_raw(7.00000) self.sma.update_raw(8.00000) self.sma.update_raw(9.00000) self.sma.update_raw(10.00000) # Act # Assert self.assertEqual(True, self.sma.initialized) self.assertEqual(10, self.sma.count) self.assertEqual(5.5, self.sma.value) def test_handle_quote_tick_updates_indicator(self): # Arrange indicator = SimpleMovingAverage(10, PriceType.MID) tick = TestStubs.quote_tick_5decimal(AUDUSD_SIM.symbol) # Act indicator.handle_quote_tick(tick) # Assert self.assertTrue(indicator.has_inputs) self.assertEqual(1.00002, indicator.value) def test_handle_trade_tick_updates_indicator(self): # Arrange indicator = SimpleMovingAverage(10) tick = TestStubs.trade_tick_5decimal(AUDUSD_SIM.symbol) # Act indicator.handle_trade_tick(tick) # Assert self.assertTrue(indicator.has_inputs) self.assertEqual(1.00001, indicator.value) def test_handle_bar_updates_indicator(self): # Arrange indicator = SimpleMovingAverage(10) bar = TestStubs.bar_5decimal() # Act indicator.handle_bar(bar) # Assert self.assertTrue(indicator.has_inputs) self.assertEqual(1.00003, indicator.value) def test_value_with_one_input_returns_expected_value(self): # Arrange self.sma.update_raw(1.00000) # Act # Assert self.assertEqual(1.0, self.sma.value) def test_value_with_three_inputs_returns_expected_value(self): # Arrange self.sma.update_raw(1.00000) self.sma.update_raw(2.00000) self.sma.update_raw(3.00000) # Act # Assert self.assertEqual(2.0, self.sma.value) def test_value_at_returns_expected_value(self): # Arrange self.sma.update_raw(1.00000) self.sma.update_raw(2.00000) self.sma.update_raw(3.00000) # Act # Assert self.assertEqual(2.0, self.sma.value) def test_handle_quote_tick_updates_with_expected_value(self): # Arrange sma_for_ticks1 = SimpleMovingAverage(10, PriceType.ASK) sma_for_ticks2 = SimpleMovingAverage(10, PriceType.MID) sma_for_ticks3 = SimpleMovingAverage(10, PriceType.BID) tick = TestStubs.quote_tick_5decimal(AUDUSD_SIM.symbol) # Act sma_for_ticks1.handle_quote_tick(tick) sma_for_ticks2.handle_quote_tick(tick) sma_for_ticks3.handle_quote_tick(tick) # Assert self.assertTrue(sma_for_ticks1.has_inputs) self.assertTrue(sma_for_ticks2.has_inputs) self.assertTrue(sma_for_ticks3.has_inputs) self.assertEqual(1.00003, sma_for_ticks1.value) self.assertEqual(1.00002, sma_for_ticks2.value) self.assertEqual(1.00001, sma_for_ticks3.value) def test_handle_trade_tick_updates_with_expected_value(self): # Arrange sma_for_ticks = SimpleMovingAverage(10) tick = TestStubs.trade_tick_5decimal(AUDUSD_SIM.symbol) # Act sma_for_ticks.handle_trade_tick(tick) # Assert self.assertTrue(sma_for_ticks.has_inputs) self.assertEqual(1.00001, sma_for_ticks.value) def test_reset_successfully_returns_indicator_to_fresh_state(self): # Arrange for _i in range(1000): self.sma.update_raw(1.00000) # Act self.sma.reset() # Assert self.assertFalse(self.sma.initialized) self.assertEqual(0, self.sma.value)