From 10c1f55d4db93cf11e431d451dcd64f015709f08 Mon Sep 17 00:00:00 2001 From: Mike Neilson Date: Wed, 24 Feb 2021 13:29:28 -0800 Subject: [PATCH 1/3] setting up code coverage. --- .gitignore | 5 ++++- tests/test_value.py | 2 ++ unittest.cfg | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 unittest.cfg diff --git a/.gitignore b/.gitignore index 0205e3c..d86b5b3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,7 @@ build/* *.o test_priv test_priv/* -**/__pycache__ \ No newline at end of file +**/__pycache__ +coverage.xml +.coverage +htmlcov diff --git a/tests/test_value.py b/tests/test_value.py index 80615ed..d486cb7 100644 --- a/tests/test_value.py +++ b/tests/test_value.py @@ -34,3 +34,5 @@ def data(): assert v.values[3][1] == 3 assert v.values[4][1] == 4 assert v.values[8][1] == 8 + + diff --git a/unittest.cfg b/unittest.cfg new file mode 100644 index 0000000..51ed898 --- /dev/null +++ b/unittest.cfg @@ -0,0 +1,3 @@ +[coverage] +always-on = True +coverage = repgen From 701920ce6f3b5ea987b24bf179363dff7f4ecfc0 Mon Sep 17 00:00:00 2001 From: Mike Neilson Date: Wed, 24 Feb 2021 13:34:57 -0800 Subject: [PATCH 2/3] simple math test and missing operator. --- repgen/data/value.py | 1 + tests/test_value.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/repgen/data/value.py b/repgen/data/value.py index eebf844..c4972ff 100644 --- a/repgen/data/value.py +++ b/repgen/data/value.py @@ -1,5 +1,6 @@ import pytz,datetime,sys from inspect import isfunction +import operator # types string_types = ("".__class__,u"".__class__) number_types = (int,float,complex) diff --git a/tests/test_value.py b/tests/test_value.py index d486cb7..a6fb9fc 100644 --- a/tests/test_value.py +++ b/tests/test_value.py @@ -36,3 +36,8 @@ def data(): assert v.values[8][1] == 8 +def test_simple_sum(): + v1 = Value(1) + v2 = Value(2) + v3 = v1+v2 + assert v3.value == 3 \ No newline at end of file From 55fc03f4c59d76bfaa2a19dd54e5a92120244ea7 Mon Sep 17 00:00:00 2001 From: Mike Neilson Date: Wed, 24 Feb 2021 15:00:53 -0800 Subject: [PATCH 3/3] added multiply test and system for test data. --- .vscode/launch.json | 15 +++++++++ repgen/data/value.py | 8 +++-- tests/__init__.py | 1 + tests/dataset.py | 34 +++++++++++++++++++++ tests/datasets/Result_SimpleStageTimes2.res | 8 +++++ tests/datasets/Set_SimpleStage.csv | 8 +++++ tests/test_value.py | 27 ++++++++++++++-- 7 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 tests/__init__.py create mode 100644 tests/dataset.py create mode 100644 tests/datasets/Result_SimpleStageTimes2.res create mode 100644 tests/datasets/Set_SimpleStage.csv diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..b6448d6 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: Debug tests", + "type": "python", + "request": "launch", + "program": "nose2 -v", + "console": "integratedTerminal" + } + ] +} \ No newline at end of file diff --git a/repgen/data/value.py b/repgen/data/value.py index c4972ff..3004f20 100644 --- a/repgen/data/value.py +++ b/repgen/data/value.py @@ -1,9 +1,10 @@ import pytz,datetime,sys -from inspect import isfunction +from inspect import isclass, isfunction import operator # types string_types = ("".__class__,u"".__class__) number_types = (int,float,complex) +array_type = ([].__class__,().__class__) class Value: shared = { @@ -68,6 +69,9 @@ def __init__( self, *args, **kwargs ): elif self.dbtype.upper() == "GENTS": current_t = self.start end_t = self.end + if isinstance(self.value, array_type): + self.values = self.value + return while current_t <= end_t: if isinstance(self.value, number_types): self.values.append( ( current_t.astimezone(self.tz),self.value,0 ) ) @@ -75,7 +79,7 @@ def __init__( self, *args, **kwargs ): self.value = self.value.value self.values.append( ( current_t.astimezone(self.tz),self.value,0 ) ) elif isfunction(self.value): - self.values.append( ( current_t.astimezone(self.tz),self.value(),0 ) ) + self.values.append( ( current_t.astimezone(self.tz),self.value(),0 ) ) current_t = current_t + self.interval diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..555c541 --- /dev/null +++ b/tests/__init__.py @@ -0,0 +1 @@ +from . dataset import Dataset,Result \ No newline at end of file diff --git a/tests/dataset.py b/tests/dataset.py new file mode 100644 index 0000000..03bf812 --- /dev/null +++ b/tests/dataset.py @@ -0,0 +1,34 @@ +import datetime +# simple timeseries data set to load in from disk +class Dataset: + + + def __init__(self, set_name): + self.values = [] + self.start = None + self.end = None + self.index = 0 + with open("tests/datasets/Set_%s.csv"%set_name,"r") as results: + for line in results.readlines(): + date,val,qual = line.strip().split(",") + _d = datetime.datetime.fromisoformat(date) + if self.start == None: + self.start = _d + self.values.append( (_d,float(val),int(qual))) + self.end = _d + + def values_all(self): + self.index = self.index + 1 + return self.values[self.index-1] + + + def values_only(self): + self.index = self.index + 1 + return self.values[self.index-1][1] + +class Result: + def __init__(self, result_set_name): + self.values = [] + with open("tests/datasets/Result_%s.res" %result_set_name,"r") as results: + for value in results.readlines(): + self.values.append( float(value) ) diff --git a/tests/datasets/Result_SimpleStageTimes2.res b/tests/datasets/Result_SimpleStageTimes2.res new file mode 100644 index 0000000..cecf967 --- /dev/null +++ b/tests/datasets/Result_SimpleStageTimes2.res @@ -0,0 +1,8 @@ +2 +4 +6 +8 +10 +12 +14 +16 \ No newline at end of file diff --git a/tests/datasets/Set_SimpleStage.csv b/tests/datasets/Set_SimpleStage.csv new file mode 100644 index 0000000..d1b07be --- /dev/null +++ b/tests/datasets/Set_SimpleStage.csv @@ -0,0 +1,8 @@ +2021-01-01T00:00:00+00:00,1,0 +2021-01-01T00:15:00+00:00,2,0 +2021-01-01T00:30:00+00:00,3,0 +2021-01-01T00:45:00+00:00,4,0 +2021-01-01T01:00:00+00:00,5,0 +2021-01-01T01:15:00+00:00,6,0 +2021-01-01T01:30:00+00:00,7,0 +2021-01-01T01:45:00+00:00,8,0 \ No newline at end of file diff --git a/tests/test_value.py b/tests/test_value.py index a6fb9fc..8172560 100644 --- a/tests/test_value.py +++ b/tests/test_value.py @@ -4,7 +4,7 @@ import datetime sys.path.append("../") - +from . dataset import Dataset,Result from repgen.data import Value from repgen.util import TZ @@ -40,4 +40,27 @@ def test_simple_sum(): v1 = Value(1) v2 = Value(2) v3 = v1+v2 - assert v3.value == 3 \ No newline at end of file + assert v3.value == 3 + +def test_multiply(): + stage = Dataset("SimpleStage") + assert stage.start != None + assert stage.end != None + assert len(stage.values) > 0 + + def data(): + data.index += 1 + return stage.values[data.index-1][1] + data.index = 0 + data.stage = stage + + v1 = Value(dbtype="GENTS", value = data, tz="UTC",start=stage.start,end=stage.end, interval = datetime.timedelta(minutes=15), picture="%0.02f") + assert len(v1.values) > 0 + + v2 = v1*2 + + result = Result("SimpleStageTimes2") + assert len(v2.values) > 0 + + for i in range(len(v2.values)): + assert int(v2.values[i][1]) == int(result.values[i]) \ No newline at end of file