1+ from unittest .mock import Mock , patch
2+
13import pandas as pd
24from pytest import mark
35
46from harp .io import REFERENCE_EPOCH , MessageType
5- from harp .reader import create_reader
7+ from harp .reader import DeviceReader , Model , create_reader , read_schema
68from tests .params import DeviceSchemaParam
79
810testdata = [
2426]
2527
2628
27- @mark .parametrize ("schemaFile" , testdata )
28- @mark .filterwarnings ("ignore:Call to deprecated" )
29- def test_create_reader (schemaFile : DeviceSchemaParam ):
30- reader = create_reader (schemaFile .path , epoch = REFERENCE_EPOCH )
29+ def helper_test_reader (reader : DeviceReader , schemaFile : DeviceSchemaParam ) -> None :
3130 schemaFile .assert_schema (reader .device )
3231
3332 whoAmI = reader .WhoAmI .read ()
@@ -42,3 +41,49 @@ def test_create_reader(schemaFile: DeviceSchemaParam):
4241 for register_name in schemaFile .expected_registers :
4342 data = reader .registers [register_name ].read ()
4443 assert isinstance (data .index , pd .DatetimeIndex )
44+
45+
46+ @mark .parametrize ("schemaFile" , testdata )
47+ @mark .filterwarnings ("ignore:Call to deprecated" )
48+ def test_create_reader (schemaFile : DeviceSchemaParam ):
49+ reader = create_reader (schemaFile .path , epoch = REFERENCE_EPOCH )
50+ helper_test_reader (reader , schemaFile )
51+
52+
53+ @mark .parametrize ("schemaFile" , testdata )
54+ def test_create_reader_from_file (schemaFile : DeviceSchemaParam ):
55+ reader = DeviceReader .from_file ("./tests/data/device.yml" , epoch = REFERENCE_EPOCH )
56+ helper_test_reader (reader , schemaFile )
57+
58+
59+ @mark .parametrize ("schemaFile" , testdata )
60+ def test_create_reader_from_dataset (schemaFile : DeviceSchemaParam ):
61+ reader = DeviceReader .from_dataset ("./tests/data" , epoch = REFERENCE_EPOCH )
62+ helper_test_reader (reader , schemaFile )
63+
64+
65+ @mark .parametrize ("schemaFile" , testdata )
66+ def test_create_reader_from_str (schemaFile : DeviceSchemaParam ):
67+ with open ("./tests/data/device.yml" , "r" , encoding = "utf-8" ) as f :
68+ reader = DeviceReader .from_str (f .read (), base_path = "./tests/data/" , epoch = REFERENCE_EPOCH )
69+ helper_test_reader (reader , schemaFile )
70+
71+
72+ @mark .parametrize ("schemaFile" , testdata )
73+ def test_create_reader_from_model (schemaFile : DeviceSchemaParam ):
74+ model = read_schema ("./tests/data/device.yml" , include_common_registers = True )
75+ reader = DeviceReader .from_model (model = model , base_path = "./tests/data/" , epoch = REFERENCE_EPOCH )
76+ helper_test_reader (reader , schemaFile )
77+
78+
79+ @mark .parametrize ("schemaFile" , testdata )
80+ @patch ("requests.get" )
81+ def test_create_reader_from_url (mock_url_get , schemaFile : DeviceSchemaParam ):
82+ mock_response = Mock ()
83+ mock_response .status_code = 200
84+ mock_response .text = open ("./tests/data/device.yml" , "r" , encoding = "utf-8" ).read ()
85+
86+ mock_url_get .return_value = mock_response
87+
88+ reader = DeviceReader .from_url ("mocked_url" , base_path = "./tests/data/" , epoch = REFERENCE_EPOCH )
89+ helper_test_reader (reader , schemaFile )
0 commit comments