2.0 first commit
This commit is contained in:
34
test/drawings.json
Normal file
34
test/drawings.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"SYM": [
|
||||
{
|
||||
"type": "Box",
|
||||
"p1": {
|
||||
"time": 1675036800,
|
||||
"logical": 2928,
|
||||
"price": 130.25483664317744
|
||||
},
|
||||
"p2": {
|
||||
"time": 1676332800,
|
||||
"logical": 2939,
|
||||
"price": 145.52389493914157
|
||||
},
|
||||
"color": "#FFF",
|
||||
"style": 0
|
||||
},
|
||||
{
|
||||
"type": "TrendLine",
|
||||
"p1": {
|
||||
"time": 1669939200,
|
||||
"logical": 2890,
|
||||
"price": 196.12991672005123
|
||||
},
|
||||
"p2": {
|
||||
"time": 1673222400,
|
||||
"logical": 2914,
|
||||
"price": 223.17796284433055
|
||||
},
|
||||
"color": "#FFF",
|
||||
"style": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
22
test/run_tests.py
Normal file
22
test/run_tests.py
Normal file
@ -0,0 +1,22 @@
|
||||
import unittest
|
||||
|
||||
from test_returns import TestReturns
|
||||
from test_table import TestTable
|
||||
from test_toolbox import TestToolBox
|
||||
from test_topbar import TestTopBar
|
||||
from test_chart import TestChart
|
||||
|
||||
|
||||
TEST_CASES = [
|
||||
TestReturns,
|
||||
TestTable,
|
||||
TestToolBox,
|
||||
TestTopBar,
|
||||
TestChart,
|
||||
]
|
||||
|
||||
if __name__ == '__main__':
|
||||
loader = unittest.TestLoader()
|
||||
cases = [loader.loadTestsFromTestCase(module) for module in TEST_CASES]
|
||||
suite = unittest.TestSuite(cases)
|
||||
unittest.TextTestRunner().run(suite)
|
||||
27
test/test_chart.py
Normal file
27
test/test_chart.py
Normal file
@ -0,0 +1,27 @@
|
||||
import unittest
|
||||
import pandas as pd
|
||||
from util import BARS
|
||||
from lightweight_charts import Chart
|
||||
|
||||
|
||||
class TestChart(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.chart = Chart()
|
||||
|
||||
def test_data_is_renamed(self):
|
||||
uppercase_df = pd.DataFrame(BARS.copy()).rename({'date': 'Date', 'open': 'OPEN', 'high': 'HIgh', 'low': 'Low', 'close': 'close', 'volUME': 'volume'})
|
||||
result = self.chart._df_datetime_format(uppercase_df)
|
||||
self.assertEqual(list(result.columns), list(BARS.rename(columns={'date': 'time'}).columns))
|
||||
|
||||
def test_line_in_list(self):
|
||||
result0 = self.chart.create_line()
|
||||
result1 = self.chart.create_line()
|
||||
self.assertEqual(result0, self.chart.lines()[0])
|
||||
self.assertEqual(result1, self.chart.lines()[1])
|
||||
|
||||
def tearDown(self):
|
||||
self.chart.exit()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
41
test/test_returns.py
Normal file
41
test/test_returns.py
Normal file
@ -0,0 +1,41 @@
|
||||
import unittest
|
||||
import pandas as pd
|
||||
from lightweight_charts import Chart
|
||||
import asyncio
|
||||
|
||||
from util import BARS, Tester
|
||||
|
||||
|
||||
|
||||
class TestReturns(Tester):
|
||||
def test_screenshot_returns_value(self):
|
||||
self.chart.set(BARS)
|
||||
self.chart.show()
|
||||
screenshot_data = self.chart.screenshot()
|
||||
self.assertIsNotNone(screenshot_data)
|
||||
|
||||
def test_save_drawings(self):
|
||||
self.chart.exit()
|
||||
|
||||
async def main():
|
||||
asyncio.create_task(self.chart.show_async());
|
||||
|
||||
await asyncio.sleep(2)
|
||||
self.chart.toolbox.drawings.clear() # clear drawings in python
|
||||
self.assertTrue(len(self.chart.toolbox.drawings) == 0)
|
||||
self.chart.run_script(f'{self.chart.id}.toolBox.saveDrawings();')
|
||||
await asyncio.sleep(1) # resave them, and assert they exist
|
||||
self.assertTrue(len(self.chart.toolbox.drawings) > 0)
|
||||
self.chart.exit()
|
||||
|
||||
self.chart = Chart(toolbox=True, debug=True)
|
||||
self.chart.set(BARS)
|
||||
self.chart.topbar.textbox('symbol', 'SYM', align='right')
|
||||
self.chart.toolbox.save_drawings_under(self.chart.topbar['symbol'])
|
||||
self.chart.toolbox.import_drawings("drawings.json")
|
||||
self.chart.toolbox.load_drawings("SYM")
|
||||
asyncio.run(main())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
12
test/test_table.py
Normal file
12
test/test_table.py
Normal file
@ -0,0 +1,12 @@
|
||||
import unittest
|
||||
import pandas as pd
|
||||
|
||||
from lightweight_charts import Chart
|
||||
|
||||
|
||||
class TestTable(unittest.TestCase):
|
||||
...
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
12
test/test_toolbox.py
Normal file
12
test/test_toolbox.py
Normal file
@ -0,0 +1,12 @@
|
||||
import unittest
|
||||
import pandas as pd
|
||||
|
||||
from lightweight_charts import Chart
|
||||
|
||||
|
||||
class TestToolBox(unittest.TestCase):
|
||||
...
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
23
test/test_topbar.py
Normal file
23
test/test_topbar.py
Normal file
@ -0,0 +1,23 @@
|
||||
import unittest
|
||||
import pandas as pd
|
||||
|
||||
from lightweight_charts import Chart
|
||||
|
||||
|
||||
class TestTopBar(unittest.TestCase):
|
||||
def test_switcher_fires_event(self):
|
||||
chart = Chart()
|
||||
chart.topbar.switcher('a', ('1', '2'), func=lambda c: (self.assertEqual(c.topbar['a'].value, '2'), c.exit()))
|
||||
chart.run_script(f'{chart.topbar["a"].id}.intervalElements[1].dispatchEvent(new Event("click"))')
|
||||
chart.show(block=True)
|
||||
|
||||
def test_button_fires_event(self):
|
||||
chart = Chart()
|
||||
chart.topbar.button('a', '1', func=lambda c: (self.assertEqual(c.topbar['a'].value, '2'), c.exit()))
|
||||
chart.topbar['a'].set('2')
|
||||
chart.run_script(f'{chart.topbar["a"].id}.elem.dispatchEvent(new Event("click"))')
|
||||
chart.show(block=True)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
20
test/util.py
Normal file
20
test/util.py
Normal file
@ -0,0 +1,20 @@
|
||||
import unittest
|
||||
import pandas as pd
|
||||
|
||||
from lightweight_charts import Chart
|
||||
|
||||
|
||||
BARS = pd.read_csv('../examples/1_setting_data/ohlcv.csv')
|
||||
|
||||
|
||||
|
||||
class Tester(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.chart: Chart = Chart();
|
||||
|
||||
def tearDown(self) -> None:
|
||||
self.chart.exit()
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user