-
Notifications
You must be signed in to change notification settings - Fork 456
/
test_talib_func_wrapper.py
85 lines (84 loc) · 3.16 KB
/
test_talib_func_wrapper.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# -------------------------------------------------------------------------------------------------
# Copyright (C) 2015-2024 Nautech Systems Pty Ltd. All rights reserved.
# https://nautechsystems.io
#
# Licensed under the GNU Lesser General Public License Version 3.0 (the "License");
# You may not use this file except in compliance with the License.
# You may obtain a copy of the License at https://www.gnu.org/licenses/lgpl-3.0.en.html
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# -------------------------------------------------------------------------------------------------
# import importlib.util
# import sys
#
# import pytest
#
#
# if importlib.util.find_spec("talib") is None:
# if sys.platform == "linux":
# # Raise the exception (expecting talib to be available on Linux)
# error_message = (
# "Failed to import TA-Lib. This module requires TA-Lib to be installed. "
# "Please visit https://github.com/TA-Lib/ta-lib-python for installation instructions. "
# "If TA-Lib is already installed, ensure it is correctly added to your Python environment."
# )
# raise ImportError(error_message)
# pytestmark = pytest.mark.skip(reason="talib is not installed")
# else:
# import talib
# from talib import abstract
#
# from nautilus_trader.indicators.ta_lib.manager import TAFunctionWrapper
#
#
# def test_init_with_valid_name_and_no_params():
# wrapper = TAFunctionWrapper(name="SMA")
# assert wrapper.name == "SMA"
# assert isinstance(wrapper.fn, talib._ta_lib.Function)
# assert isinstance(wrapper.output_names, list)
# assert all(isinstance(o, str) for o in wrapper.output_names)
#
#
# def test_init_with_valid_name_and_params():
# wrapper = TAFunctionWrapper(name="EMA", params={"timeperiod": 10})
# assert wrapper.name == "EMA"
# assert wrapper.fn.parameters["timeperiod"] == 10
#
#
# def test_repr():
# wrapper = TAFunctionWrapper(name="SMA", params={"timeperiod": 5})
# assert repr(wrapper) == "TAFunctionWrapper(SMA_5)"
#
#
# def test_get_outputs_names():
# fn = abstract.Function("SMA")
# fn.set_parameters({"timeperiod": 5})
# output_names = TAFunctionWrapper._get_outputs_names("SMA", fn)
# assert output_names == ["SMA_5"]
#
#
# def test_from_str_valid():
# wrapper = TAFunctionWrapper.from_str("SMA_5")
# assert wrapper.name == "SMA"
# assert wrapper.fn.parameters["timeperiod"] == 5
#
#
# def test_from_str_invalid():
# with pytest.raises(Exception):
# TAFunctionWrapper.from_str("INVALID_5")
#
#
# def test_from_str_invalid_params():
# with pytest.raises(ValueError):
# TAFunctionWrapper.from_str("SMA_20_10")
#
#
# def test_from_list_of_str():
# indicators = ["SMA_5", "EMA_10"]
# wrappers = TAFunctionWrapper.from_list_of_str(indicators)
# assert len(wrappers) == 2
# assert all(isinstance(w, TAFunctionWrapper) for w in wrappers)