|
@@ -0,0 +1,67 @@
|
|
|
+#
|
|
|
+# Copyright (c) Daniel Sheffield 2023
|
|
|
+#
|
|
|
+# All rights reserved
|
|
|
+#
|
|
|
+# THIS SOFTWARE IS PROVIDED AS IS WITHOUT WARRANTY
|
|
|
+from datetime import datetime
|
|
|
+from pytest import mark, raises
|
|
|
+from pandas import DataFrame
|
|
|
+
|
|
|
+from app.data.dataframe_util import(
|
|
|
+ get_caption,
|
|
|
+ get_divider,
|
|
|
+ get_time_range,
|
|
|
+ stats,
|
|
|
+)
|
|
|
+
|
|
|
+@mark.parametrize('data', [
|
|
|
+ DataFrame([
|
|
|
+ {'ts': datetime(1970, 1, 1)}, {'ts': datetime(2000, 2, 28)}
|
|
|
+ ])
|
|
|
+])
|
|
|
+def test_get_timerange(data):
|
|
|
+ assert ("01/01/1970", "28/02/2000") == get_time_range(data, 'ts')
|
|
|
+
|
|
|
+@mark.parametrize('width, marker, expected', [
|
|
|
+ #(0, '─', (AssertionError, "")),
|
|
|
+ #(1, '─', (AssertionError, "")),
|
|
|
+ #(2, '─', (AssertionError, "")),
|
|
|
+ (0, '─', ' ─ '),
|
|
|
+ (1, '─', ' ─ '),
|
|
|
+ (2, '─', ' ─ '),
|
|
|
+ (3, '─', ' ─ '),
|
|
|
+ (4, '─', ' ── '),
|
|
|
+ (5, '─', ' ─── '),
|
|
|
+ (6, '─', ' ── '),
|
|
|
+ (7, '─', ' ─── '),
|
|
|
+ (8, '─', ' ── '),
|
|
|
+])
|
|
|
+def test_get_divider(width, marker, expected):
|
|
|
+ if not isinstance(expected, tuple):
|
|
|
+ assert expected == get_divider(width, marker=marker)
|
|
|
+ return
|
|
|
+
|
|
|
+ with raises(expected[0]):
|
|
|
+ get_divider(width, marker=marker)
|
|
|
+
|
|
|
+@mark.parametrize('data', [
|
|
|
+ DataFrame([
|
|
|
+ {'ts': 0, 'price': 3.0, 'amount': 10, '$/unit': 0.3 },
|
|
|
+ {'ts': datetime(2000, 2, 28), 'price': 11, 'amount': 2, '$/unit': 5.5 },
|
|
|
+ ])
|
|
|
+])
|
|
|
+def test_stats(data):
|
|
|
+ assert [0.3, 2.9, 14/12, 5.5] == stats(data, 'price', 'amount', '$/unit')
|
|
|
+
|
|
|
+@mark.parametrize('data', [
|
|
|
+ DataFrame([
|
|
|
+ {'ts': datetime(1970, 1, 1)}, {'ts': datetime(2000, 2, 28)}
|
|
|
+ ])
|
|
|
+])
|
|
|
+@mark.parametrize('width, div', [
|
|
|
+ (26, ' ── '),
|
|
|
+ (27, ' ─── '),
|
|
|
+])
|
|
|
+def test_get_caption(data, width, div):
|
|
|
+ assert f"01/01/1970 {div} 28/02/2000" == get_caption(get_time_range(data, 'ts'), width)
|