Skip to content

Commit 0683298

Browse files
committed
test: Add unit tests for new indicators including DSP, LRSI, PO, TRIXH, VWMACD, MMAR, RAINBOW, drawdown, HWC, and VFI
1 parent 2d5eccc commit 0683298

14 files changed

+155
-1
lines changed

tests/test_ext_indicator_cycles.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ def setUp(self):
2121
def tearDown(self):
2222
pass
2323

24+
def test_dsp_ext(self):
25+
self.data.ta.dsp(append=True)
26+
self.assertIsInstance(self.data, DataFrame)
27+
self.assertEqual(self.data.columns[-1], "DSP_14")
28+
2429
def test_ebsw_ext(self):
2530
self.data.ta.ebsw(append=True)
2631
self.assertIsInstance(self.data, DataFrame)

tests/test_ext_indicator_momentum.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,3 +304,28 @@ def test_willr_ext(self):
304304
self.data.ta.willr(append=True)
305305
self.assertIsInstance(self.data, DataFrame)
306306
self.assertEqual(self.data.columns[-1], "WILLR_14")
307+
308+
def test_lrsi_ext(self):
309+
self.data.ta.lrsi(append=True)
310+
self.assertIsInstance(self.data, DataFrame)
311+
self.assertEqual(self.data.columns[-1], "LRSI_14")
312+
313+
def test_po_ext(self):
314+
self.data.ta.po(append=True)
315+
self.assertIsInstance(self.data, DataFrame)
316+
self.assertEqual(self.data.columns[-1], "PO_14")
317+
318+
def test_trixh_ext(self):
319+
self.data.ta.trixh(append=True)
320+
self.assertIsInstance(self.data, DataFrame)
321+
self.assertEqual(
322+
list(self.data.columns[-3:]), ["TRIX_18_9", "TRIXs_18_9", "TRIXh_18_9"]
323+
)
324+
325+
def test_vwmacd_ext(self):
326+
self.data.ta.vwmacd(append=True)
327+
self.assertIsInstance(self.data, DataFrame)
328+
self.assertEqual(
329+
list(self.data.columns[-3:]),
330+
["VWMACD_12_26_9", "VWMACDh_12_26_9", "VWMACDs_12_26_9"],
331+
)

tests/test_ext_indicator_overlap_ext.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,3 +196,17 @@ def test_zlma_ext(self):
196196
self.data.ta.zlma(append=True)
197197
self.assertIsInstance(self.data, DataFrame)
198198
self.assertEqual(self.data.columns[-1], "ZL_EMA_10")
199+
200+
def test_mmar_ext(self):
201+
self.data.ta.mmar(append=True)
202+
self.assertIsInstance(self.data, DataFrame)
203+
# MMAR returns multiple columns, check if any MMAR columns were added
204+
mmar_cols = [col for col in self.data.columns if col.startswith("MMAR_")]
205+
self.assertTrue(len(mmar_cols) > 0)
206+
207+
def test_rainbow_ext(self):
208+
self.data.ta.rainbow(append=True)
209+
self.assertIsInstance(self.data, DataFrame)
210+
# RAINBOW returns multiple columns, check if any RAINBOW columns were added
211+
rainbow_cols = [col for col in self.data.columns if col.startswith("RAINBOW_")]
212+
self.assertTrue(len(rainbow_cols) > 0)

tests/test_ext_indicator_performance.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,9 @@ def test_cum_percent_return_ext(self):
4141
self.data.ta.percent_return(append=True, cumulative=True)
4242
self.assertIsInstance(self.data, DataFrame)
4343
self.assertEqual(self.data.columns[-1], "CUMPCTRET_1")
44+
45+
def test_drawdown_ext(self):
46+
self.data.ta.drawdown(append=True)
47+
self.assertIsInstance(self.data, DataFrame)
48+
# Drawdown returns 3 columns: DD, DD_PCT, DD_LOG
49+
self.assertEqual(list(self.data.columns[-3:]), ["DD", "DD_PCT", "DD_LOG"])

tests/test_ext_indicator_trend.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,3 +134,23 @@ def test_vortext_ext(self):
134134
self.data.ta.vortex(append=True)
135135
self.assertIsInstance(self.data, DataFrame)
136136
self.assertEqual(list(self.data.columns[-2:]), ["VTXP_14", "VTXM_14"])
137+
138+
def test_pmax_ext(self):
139+
self.data.ta.pmax(append=True)
140+
self.assertIsInstance(self.data, DataFrame)
141+
self.assertEqual(self.data.columns[-1], "PMAX_E_10_3.0")
142+
143+
def test_tsignals_ext(self):
144+
# Create a simple trend series for testing
145+
trend = self.data.ta.sma(length=10) - self.data.ta.sma(length=20)
146+
trend = (trend > 0).astype(int)
147+
result = self.data.ta.tsignals(trend)
148+
self.assertIsInstance(result, DataFrame)
149+
self.assertEqual(result.name, "TS")
150+
151+
def test_xsignals_ext(self):
152+
# Create simple signal series for testing
153+
signal = self.data.ta.rsi()
154+
result = self.data.ta.xsignals(signal, xa=70, xb=30)
155+
self.assertIsInstance(result, DataFrame)
156+
self.assertEqual(result.name, "XS")

tests/test_ext_indicator_volatility.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,10 @@ def test_ui_ext(self):
118118
self.data.ta.ui(append=True, everget=True)
119119
self.assertIsInstance(self.data, DataFrame)
120120
self.assertEqual(self.data.columns[-1], "UIe_14")
121+
122+
def test_hwc_ext(self):
123+
self.data.ta.hwc(append=True)
124+
self.assertIsInstance(self.data, DataFrame)
125+
# HWC returns 3 columns: HWM, HWU, HWL
126+
hwc_cols = [col for col in self.data.columns if col.startswith("HW")]
127+
self.assertTrue(len(hwc_cols) >= 3)

tests/test_ext_indicator_volume.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,8 @@ def test_vp_ext(self):
116116
result = self.data.ta.vp()
117117
self.assertIsInstance(result, DataFrame)
118118
self.assertEqual(result.name, "VP_10")
119+
120+
def test_vfi_ext(self):
121+
self.data.ta.vfi(append=True)
122+
self.assertIsInstance(self.data, DataFrame)
123+
self.assertEqual(self.data.columns[-1], "VFI_130")

tests/test_indicator_cycles.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ def setUp(self):
4848
def tearDown(self):
4949
pass
5050

51+
def test_dsp(self):
52+
result = pandas_ta.dsp(self.close)
53+
self.assertIsInstance(result, Series)
54+
self.assertEqual(result.name, "DSP_14")
55+
5156
def test_ebsw(self):
5257
result = pandas_ta.ebsw(self.close)
5358
self.assertIsInstance(result, Series)

tests/test_indicator_momentum.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,26 @@ def test_willr(self):
600600
except Exception as ex:
601601
error_analysis(result, CORRELATION, ex)
602602

603+
def test_lrsi(self):
604+
result = pandas_ta.lrsi(self.close)
605+
self.assertIsInstance(result, Series)
606+
self.assertEqual(result.name, "LRSI_14")
607+
608+
def test_po(self):
609+
result = pandas_ta.po(self.close)
610+
self.assertIsInstance(result, Series)
611+
self.assertEqual(result.name, "PO_14")
612+
613+
def test_trixh(self):
614+
result = pandas_ta.trixh(self.close)
615+
self.assertIsInstance(result, DataFrame)
616+
self.assertEqual(result.name, "TRIXH_18_9")
617+
618+
def test_vwmacd(self):
619+
result = pandas_ta.vwmacd(self.close, self.volume)
620+
self.assertIsInstance(result, DataFrame)
621+
self.assertEqual(result.name, "VWMACD_12_26_9")
622+
603623
result = pandas_ta.willr(self.high, self.low, self.close)
604624
self.assertIsInstance(result, Series)
605625
self.assertEqual(result.name, "WILLR_14")

tests/test_indicator_overlap.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,3 +508,13 @@ def test_zlma(self):
508508
result = pandas_ta.zlma(self.close)
509509
self.assertIsInstance(result, Series)
510510
self.assertEqual(result.name, "ZL_EMA_10")
511+
512+
def test_mmar(self):
513+
result = pandas_ta.mmar(self.close)
514+
self.assertIsInstance(result, DataFrame)
515+
self.assertEqual(result.name, "MMAR_10_5_6")
516+
517+
def test_rainbow(self):
518+
result = pandas_ta.rainbow(self.close)
519+
self.assertIsInstance(result, DataFrame)
520+
self.assertEqual(result.name, "RAINBOW_2_10")

0 commit comments

Comments
 (0)