mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-06-12 01:34:48 +08:00
* PyDocstyle Compliant batch 1 * Batch 2 * Batch 3 * Batch 4 * Batch 5 * Batch 6 * Batch 7 * Linting * MyPy * mypy things * black * more mypy * black * fix that * black again * undo that * Fix error message * pylint --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
102 lines
2.7 KiB
Python
102 lines
2.7 KiB
Python
"""Test the technical helpers module."""
|
|
|
|
import numpy as np
|
|
import pandas as pd
|
|
import pytest
|
|
from extensions.technical.openbb_technical.helpers import (
|
|
calculate_cones,
|
|
calculate_fib_levels,
|
|
clenow_momentum,
|
|
garman_klass,
|
|
hodges_tompkins,
|
|
parkinson,
|
|
rogers_satchell,
|
|
validate_data,
|
|
yang_zhang,
|
|
)
|
|
|
|
# pylint: disable=redefined-outer-name
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def mock_data(top_range: int = 100):
|
|
"""Mock data for testing."""
|
|
_open = pd.Series(np.arange(1, top_range))
|
|
_high = pd.Series(np.arange(1, top_range))
|
|
_low = pd.Series(np.arange(1, top_range))
|
|
_close = pd.Series(np.arange(1, top_range))
|
|
_volume = pd.Series(np.arange(1, top_range))
|
|
_date = pd.Series(pd.date_range("2021-01-01", periods=top_range - 1, freq="D"))
|
|
return pd.DataFrame(
|
|
{
|
|
"open": _open,
|
|
"high": _high,
|
|
"low": _low,
|
|
"close": _close,
|
|
"volume": _volume,
|
|
"date": _date,
|
|
}
|
|
).set_index("date")
|
|
|
|
|
|
def test_parkinson_with_mock_data(mock_data):
|
|
"""Test parkinson with valid input."""
|
|
result = parkinson(mock_data)
|
|
assert not result.empty
|
|
|
|
|
|
def test_garman_klass_with_mock_data(mock_data):
|
|
"""Test garman_klass with valid input."""
|
|
result = garman_klass(mock_data)
|
|
assert not result.empty
|
|
|
|
|
|
def test_hodges_tompkins_with_mock_data(mock_data):
|
|
"""Test hodges_tompkins with valid input."""
|
|
result = hodges_tompkins(mock_data)
|
|
assert not result.empty
|
|
|
|
|
|
def test_rogers_satchell_with_mock_data(mock_data):
|
|
"""Test rogers_satchell with valid input."""
|
|
result = rogers_satchell(mock_data)
|
|
assert not result.empty
|
|
|
|
|
|
def test_yang_zhang_with_mock_data(mock_data):
|
|
"""Test yang_zhang with valid input."""
|
|
result = yang_zhang(mock_data)
|
|
assert not result.empty
|
|
|
|
|
|
def test_clenow_momentum_with_mock_data(mock_data):
|
|
"""Test clenow_momentum with valid input."""
|
|
result = clenow_momentum(mock_data["close"])
|
|
assert result
|
|
|
|
|
|
def test_calculate_cones_with_mock_data(mock_data):
|
|
"""Test calculate_cones with valid input."""
|
|
result = calculate_cones(
|
|
mock_data,
|
|
lower_q=0.1,
|
|
upper_q=0.9,
|
|
is_crypto=False,
|
|
model="std",
|
|
)
|
|
assert not result.empty
|
|
|
|
|
|
def test_calculate_fib_levels_with_mock_data(mock_data):
|
|
"""Test calculate_fib_levels with valid input."""
|
|
result = calculate_fib_levels(mock_data, "close")
|
|
assert result
|
|
|
|
|
|
def test_validate_data_with_mock_data(mock_data):
|
|
"""Test validate_data with valid input."""
|
|
try:
|
|
validate_data(mock_data["close"].tolist(), 20)
|
|
except ValueError:
|
|
pytest.fail("validate_data raised ValueError unexpectedly!")
|