From db9321ca32f283f7fd59e2e8b5f8a695c66fce98 Mon Sep 17 00:00:00 2001 From: Terry Truong Date: Wed, 28 Dec 2022 19:46:34 +1100 Subject: Use scale-associated event scores for uniform spread Add 'dist' and 'scores' db tables Add 'scale' server query parameter (and remove 'excl') Disregard event-end when querying database --- backend/tests/test_gen_score_data.py | 82 +++++++++++++++++++++++++++++++++ backend/tests/test_histplorer.py | 24 +++++++++- backend/tests/test_reduce_event_data.py | 2 +- 3 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 backend/tests/test_gen_score_data.py (limited to 'backend/tests') diff --git a/backend/tests/test_gen_score_data.py b/backend/tests/test_gen_score_data.py new file mode 100644 index 0000000..a466679 --- /dev/null +++ b/backend/tests/test_gen_score_data.py @@ -0,0 +1,82 @@ +import unittest +import tempfile, os + +from tests.common import createTestDbTable, readTestDbTable +from hist_data.gen_score_data import genData, MONTH_SCALE, DAY_SCALE +from hist_data.cal import gregorianToJdn + +class TestGenData(unittest.TestCase): + def test_gen(self): + with tempfile.TemporaryDirectory() as tempDir: + # Create temp history db + dbFile = os.path.join(tempDir, 'data.db') + createTestDbTable( + dbFile, + 'CREATE TABLE events (id INT PRIMARY KEY, title TEXT UNIQUE, ' \ + 'start INT, start_upper INT, end INT, end_upper INT, fmt INT, ctg TEXT)', + 'INSERT INTO events VALUES (?, ?, ?, ?, ?, ?, ?, ?)', + { + (1, 'event one', 1900, None, None, None, 0, 'event'), + (2, 'event two', 2452594, None, 2455369, None, 3, 'human'), # 15/11/2002 to 21/06/2010 + (3, 'event three', 1900, None, 2000, None, 0, 'event'), + (4, 'event four', 1901, None, 2000, 2010, 0, 'event'), + (5, 'event five', 2415294, None, None, None, 1, 'event'), # 01/10/1900 + (6, 'event six', 2415030, None, None, None, 1, 'event'), # 10/01/1900 + } + ) + createTestDbTable( + dbFile, + 'CREATE TABLE pop (id INT PRIMARY KEY, pop INT)', + 'INSERT INTO pop VALUES (?, ?)', + { + (1, 11), + (2, 21), + (4, 5), + (5, 50), + (6, 10), + } + ) + # Run + genData(dbFile, [10, 1, MONTH_SCALE, DAY_SCALE], 2) + # Check + self.assertEqual( + readTestDbTable(dbFile, 'SELECT scale, unit, count FROM dist'), + { + (10, 190, 4), + (10, 200, 1), + (1, 1900, 3), + (1, 1901, 1), + (1, 2002, 1), + (MONTH_SCALE, gregorianToJdn(1900, 1, 1), 2), + (MONTH_SCALE, gregorianToJdn(1901, 1, 1), 1), + (MONTH_SCALE, gregorianToJdn(1900, 10, 1), 1), + (MONTH_SCALE, gregorianToJdn(2002, 11, 1), 1), + (DAY_SCALE, gregorianToJdn(1900, 1, 1), 1), + (DAY_SCALE, gregorianToJdn(1900, 1, 10), 1), + (DAY_SCALE, gregorianToJdn(1900, 10, 1), 1), + (DAY_SCALE, gregorianToJdn(1901, 1, 1), 1), + (DAY_SCALE, gregorianToJdn(2002, 11, 15), 1), + } + ) + self.assertEqual( + readTestDbTable(dbFile, 'SELECT id, scale, score FROM scores'), + { + (5, 10, 50), + (1, 10, 11), + (2, 10, 21), + (5, 1, 50), + (1, 1, 11), + (4, 1, 5), + (2, 1, 21), + (1, MONTH_SCALE, 11), + (6, MONTH_SCALE, 10), + (4, MONTH_SCALE, 5), + (5, MONTH_SCALE, 50), + (2, MONTH_SCALE, 21), + (1, DAY_SCALE, 11), + (4, DAY_SCALE, 5), + (5, DAY_SCALE, 50), + (6, DAY_SCALE, 10), + (2, DAY_SCALE, 21), + } + ) diff --git a/backend/tests/test_histplorer.py b/backend/tests/test_histplorer.py index 6487977..eb89f50 100644 --- a/backend/tests/test_histplorer.py +++ b/backend/tests/test_histplorer.py @@ -16,6 +16,7 @@ def initTestDb(dbFile: str) -> None: (3, 'event three', 2448175, 2451828, None, None, 2, 'discovery'), # 10/10/1990 to 10/10/2000 (4, 'event four', 991206, None, 1721706, None, 1, 'event'), # 10/10/-2000 to 10/10/1 (5, 'event five', 2000, None, 2001, None, 0, 'event'), + (6, 'event six', 1500, None, 2000, None, 0, 'event'), } ) createTestDbTable( @@ -28,6 +29,21 @@ def initTestDb(dbFile: str) -> None: (3, 0), (4, 1000), (5, 51), + (6, 60), + } + ) + createTestDbTable( + dbFile, + 'CREATE TABLE scores (id INT, scale INT, score INT, PRIMARY KEY (id, scale))', + 'INSERT INTO scores VALUES (?, ?, ?)', + { + (1, 1, 11), + (1, 10, 11), + (2, 1, 21), + (3, 1, 0), + (4, 1, 1000), + (5, 1, 51), + (6, 10, 60), } ) createTestDbTable( @@ -40,6 +56,7 @@ def initTestDb(dbFile: str) -> None: (3, 30), (4, 20), (5, 50), + (6, 60), } ) createTestDbTable( @@ -51,6 +68,7 @@ def initTestDb(dbFile: str) -> None: (20, 'example.com/2', 'cc-by', 'artist two', 'credits two'), (30, 'example.com/3', 'cc-by-sa 3.0', 'artist three', 'credits three'), (50, 'example.com/5', 'cc-by', 'artist five', 'credits five'), + (60, 'example.com/6', 'cc-by', 'artist six', 'credits six'), } ) createTestDbTable( @@ -63,6 +81,7 @@ def initTestDb(dbFile: str) -> None: (3, 300, 'desc three'), (4, 400, 'desc four'), (5, 500, 'desc five'), + (6, 600, 'desc six'), } ) @@ -75,17 +94,18 @@ class TestHandleReq(unittest.TestCase): def tearDown(self): self.tempDir.cleanup() def test_events_req(self): - response = handleReq(self.dbFile, {'QUERY_STRING': 'type=events&range=-1999.2002-11-1&incl=3&limit=2'}) + response = handleReq(self.dbFile, {'QUERY_STRING': 'type=events&range=-1999.2002-11-1&scale=1&incl=3&limit=2'}) self.assertEqual(response, [ Event(5, 'event five', HistDate(True, 2000, 1, 1), None, HistDate(True, 2001, 1, 1), None, 'event', 50, 51), Event(3, 'event three', HistDate(True, 1990, 10, 10), HistDate(True, 2000, 10, 10), None, None, 'discovery', 30, 0), ]) - response = handleReq(self.dbFile, {'QUERY_STRING': 'type=events&range=.1999-11-27&excl=1&ctg=event'}) + response = handleReq(self.dbFile, {'QUERY_STRING': 'type=events&range=.1999-11-27&scale=1&ctg=event'}) self.assertEqual(response, [ Event(4, 'event four', HistDate(False, -2000, 10, 10), None, HistDate(False, 1, 10, 10), None, 'event', 20, 1000), + Event(1, 'event one', HistDate(True, 1900, 1, 1), None, None, None, 'event', 10, 11), ]) def test_info_req(self): response = handleReq(self.dbFile, {'QUERY_STRING': 'type=info&event=3'}) diff --git a/backend/tests/test_reduce_event_data.py b/backend/tests/test_reduce_event_data.py index cb54758..c879150 100644 --- a/backend/tests/test_reduce_event_data.py +++ b/backend/tests/test_reduce_event_data.py @@ -57,7 +57,7 @@ class TestReduceData(unittest.TestCase): reduceData(dbFile) # Check self.assertEqual( - readTestDbTable(dbFile, 'SELECT id, title, start, start_upper, end, end_upper, fmt, ctg from events'), + readTestDbTable(dbFile, 'SELECT id, title, start, start_upper, end, end_upper, fmt, ctg FROM events'), { (1, 'event one', 1900, None, None, None, 0, 'event'), } -- cgit v1.2.3