コード例 #1
0
class TestHilbertPeriod:
    def setup(self):
        # Fixture Setup
        self.h_period = HilbertPeriod()

    def test_name_returns_expected_name(self):
        # Arrange, Act, Assert
        assert self.h_period.name == "HilbertPeriod"

    def test_str_returns_expected_string(self):
        # Arrange, Act, Assert
        assert str(self.h_period) == "HilbertPeriod(7)"
        assert repr(self.h_period) == "HilbertPeriod(7)"

    def test_period_returns_expected_value(self):
        # Arrange, Act, Assert
        assert self.h_period.period == 7

    def test_initialized_without_inputs_returns_false(self):
        # Arrange, Act, Assert
        assert self.h_period.initialized is False

    def test_initialized_with_required_inputs_returns_true(self):
        # Arrange, Act
        for _i in range(10):
            self.h_period.update_raw(1.00010, 1.00000)

        # Assert
        assert self.h_period.initialized is True

    def test_handle_bar_updates_indicator(self):
        # Arrange
        indicator = HilbertPeriod()

        bar = TestDataStubs.bar_5decimal()

        # Act
        indicator.handle_bar(bar)

        # Assert
        assert indicator.has_inputs
        assert indicator.value == 0

    def test_value_with_no_inputs_returns_none(self):
        # Arrange, Act, Assert
        assert self.h_period.value == 0

    def test_value_with_epsilon_inputs_returns_expected_value(self):
        # Arrange
        for _i in range(100):
            self.h_period.update_raw(sys.float_info.epsilon,
                                     sys.float_info.epsilon)

        # Act, Assert
        assert self.h_period.value == 7

    def test_value_with_ones_inputs_returns_expected_value(self):
        # Arrange
        for _i in range(100):
            self.h_period.update_raw(1.00000, 1.00000)

        # Act, Assert
        assert self.h_period.value == 7

    def test_value_with_seven_inputs_returns_expected_value(self):
        # Arrange
        high = 1.00010
        low = 1.00000

        # Act
        for _i in range(9):
            high += 0.00010
            low += 0.00010
            self.h_period.update_raw(high, low)

        # Assert
        assert self.h_period.value == 0

    def test_value_with_close_on_high_returns_expected_value(self):
        # Arrange
        high = 1.00010
        low = 1.00000

        # Act
        for _i in range(1000):
            high += 0.00010
            low += 0.00010
            self.h_period.update_raw(high, low)

        # Assert
        assert self.h_period.value == 7

    def test_value_with_close_on_low_returns_expected_value(self):
        # Arrange
        high = 1.00010
        low = 1.00000

        # Act
        for _i in range(1000):
            high -= 0.00010
            low -= 0.00010
            self.h_period.update_raw(high, low)

        # Assert
        assert self.h_period.value == 7

    def test_reset_successfully_returns_indicator_to_fresh_state(self):
        # Arrange
        for _i in range(1000):
            self.h_period.update_raw(1.00000, 1.00000)

        # Act
        self.h_period.reset()

        # Assert
        assert self.h_period.value == 0  # No exceptions raised
コード例 #2
0
class HilbertPeriodTests(unittest.TestCase):
    def setUp(self):
        # Fixture Setup
        self.h_period = HilbertPeriod()

    def test_name_returns_expected_name(self):
        # Arrange
        # Act
        # Assert
        self.assertEqual("HilbertPeriod", self.h_period.name)

    def test_str_returns_expected_string(self):
        # Arrange
        # Act
        # Assert
        self.assertEqual("HilbertPeriod(7)", str(self.h_period))
        self.assertEqual("HilbertPeriod(7)", repr(self.h_period))

    def test_period_returns_expected_value(self):
        # Arrange
        # Act
        # Assert
        self.assertEqual(7, self.h_period.period)

    def test_initialized_without_inputs_returns_false(self):
        # Arrange
        # Act
        # Assert
        self.assertEqual(False, self.h_period.initialized)

    def test_initialized_with_required_inputs_returns_true(self):
        # Arrange
        # Act
        for _i in range(10):
            self.h_period.update_raw(1.00010, 1.00000)

        # Assert
        self.assertEqual(True, self.h_period.initialized)

    def test_handle_bar_updates_indicator(self):
        # Arrange
        indicator = HilbertPeriod()

        bar = TestStubs.bar_5decimal()

        # Act
        indicator.handle_bar(bar)

        # Assert
        self.assertTrue(indicator.has_inputs)
        self.assertEqual(0, indicator.value)

    def test_value_with_no_inputs_returns_none(self):
        # Arrange
        # Act
        # Assert
        self.assertEqual(0, self.h_period.value)

    def test_value_with_epsilon_inputs_returns_expected_value(self):
        # Arrange
        for _i in range(100):
            self.h_period.update_raw(sys.float_info.epsilon,
                                     sys.float_info.epsilon)

        # Act
        # Assert
        self.assertEqual(7, self.h_period.value)

    def test_value_with_ones_inputs_returns_expected_value(self):
        # Arrange
        for _i in range(100):
            self.h_period.update_raw(1.00000, 1.00000)

        # Act
        # Assert
        self.assertEqual(7, self.h_period.value)

    def test_value_with_seven_inputs_returns_expected_value(self):
        # Arrange
        high = 1.00010
        low = 1.00000

        # Act
        for _i in range(9):
            high += 0.00010
            low += 0.00010
            self.h_period.update_raw(high, low)

        # Assert
        self.assertEqual(0, self.h_period.value)

    def test_value_with_close_on_high_returns_expected_value(self):
        # Arrange
        high = 1.00010
        low = 1.00000

        # Act
        for _i in range(1000):
            high += 0.00010
            low += 0.00010
            self.h_period.update_raw(high, low)

        # Assert
        self.assertEqual(7, self.h_period.value)

    def test_value_with_close_on_low_returns_expected_value(self):
        # Arrange
        high = 1.00010
        low = 1.00000

        # Act
        for _i in range(1000):
            high -= 0.00010
            low -= 0.00010
            self.h_period.update_raw(high, low)

        # Assert
        self.assertEqual(7, self.h_period.value)

    def test_reset_successfully_returns_indicator_to_fresh_state(self):
        # Arrange
        for _i in range(1000):
            self.h_period.update_raw(1.00000, 1.00000)

        # Act
        self.h_period.reset()

        # Assert
        self.assertEqual(0, self.h_period.value)  # No exceptions raised