Skip to content

Commit 67fcfd0

Browse files
authored
Merge branch 'main' into bugfix/issue/1
2 parents 4f67d22 + 95a51c4 commit 67fcfd0

File tree

7 files changed

+111
-56
lines changed

7 files changed

+111
-56
lines changed

.github/workflows/black.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
name: black-style check
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
lint:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v2
10+
- uses: psf/black@stable

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
ci:
2+
black src/
3+
black tests/

src/codecs/item_codec.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,7 @@ def decode(
2929

3030
@staticmethod
3131
def encode(
32-
item: Item,
33-
split_kind_char: str = "|",
34-
split_data_item_char: str = "="
32+
item: Item, split_kind_char: str = "|", split_data_item_char: str = "="
3533
) -> str:
3634
item_str = f"{item.kind.value}{split_kind_char}{item.name}"
3735
if item.metric is not None:

src/codecs/metric_data_item_codec.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
class MetricDataItemCodec:
88
@staticmethod
99
def decode(
10-
data_type_and_value: str, data_type_and_value_char: str = ":"
10+
data_type_and_value: str, data_type_and_value_char: str = ":"
1111
) -> MetricDataItem:
1212
data_type, value = data_type_and_value.split(data_type_and_value_char)
1313
if data_type == MetricDataTypes.INTEGER.value:

tests/builders/test_iot_ext_item_data_builder.py

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,37 @@
66

77
class IoTextItemDataBuilderTest(TestCase):
88
# TODO: FIX bug in add_measure(...) for BOOL type values!?
9-
@parameterized.expand([
10-
(12.07, "d:12.07"),
11-
(True, "b:1"),
12-
(False, "b:0"),
13-
(42, "i:42"),
14-
("abc", "t:abc"),
15-
])
16-
def test_should_add_measure_and_serialize_to_str(self, value, expected_output_suffix):
17-
metric_name = 'example_metric_name'
18-
expected = f"t|3900237526042,d|DEV_NAME_002,m|{metric_name}={expected_output_suffix}"
19-
builder = IoTextItemDataBuilder(3900237526042, 'DEV_NAME_002')
9+
@parameterized.expand(
10+
[
11+
(12.07, "d:12.07"),
12+
(True, "b:1"),
13+
(False, "b:0"),
14+
(42, "i:42"),
15+
("abc", "t:abc"),
16+
]
17+
)
18+
def test_should_add_measure_and_serialize_to_str(
19+
self, value, expected_output_suffix
20+
):
21+
metric_name = "example_metric_name"
22+
expected = (
23+
f"t|3900237526042,d|DEV_NAME_002,m|{metric_name}={expected_output_suffix}"
24+
)
25+
builder = IoTextItemDataBuilder(3900237526042, "DEV_NAME_002")
2026
builder.add_measure(metric_name, value)
2127

2228
self.assertEqual(expected, str(builder))
2329

2430
def test_should_add_a_few_measures_and_serialize_to_str(self):
25-
expected = "t|3900237526042,d|DEV_NAME_002,m|"\
26-
"battery_level=d:12.07,m|open_door=b:0,m|open_window=b:0,m|counter_01=i:1234"
31+
expected = (
32+
"t|3900237526042,d|DEV_NAME_002,m|"
33+
"battery_level=d:12.07,m|open_door=b:0,m|open_window=b:0,m|counter_01=i:1234"
34+
)
2735

28-
builder = IoTextItemDataBuilder(3900237526042, 'DEV_NAME_002')
29-
builder.add_measure('battery_level', 12.07)
30-
builder.add_measure('open_door', True)
31-
builder.add_measure('open_window', False)
32-
builder.add_measure('counter_01', 1234)
36+
builder = IoTextItemDataBuilder(3900237526042, "DEV_NAME_002")
37+
builder.add_measure("battery_level", 12.07)
38+
builder.add_measure("open_door", True)
39+
builder.add_measure("open_window", False)
40+
builder.add_measure("counter_01", 1234)
3341

3442
self.assertEqual(expected, str(builder))

tests/codecs/test_iot_ext_codec.py

Lines changed: 66 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,75 @@
66
from src.types.item_type import ItemTypes, MetricDataItem
77
from src.types.metric_data import MetricDataTypes
88

9-
MSG_1_EXAMPLE = '''t|3900237526042,d|device_name_001,m|val_water_001=i:1234,m|val_water_002=i:15,m|bulb_state=b:1,''' \
10-
'''m|connector_state=b:0,m|temp_01=d:34.4,m|temp_02=d:36.4,m|temp_03=d:10.4,m|pwr=d:12.231,''' \
11-
'''m|current=d:1.429,m|current_battery=d:1.548'''
12-
13-
MSG_1_EXAMPLE_AS_DATA_STRUCTS = \
14-
[Item(kind=ItemTypes.TIMESTAMP_MILIS, name='3900237526042', metric=None),
15-
Item(kind=ItemTypes.DEVICE_ID, name='device_name_001', metric=None),
16-
Item(kind=ItemTypes.METRIC_ITEM, name='val_water_001', metric=MetricDataItem(
17-
data_type=MetricDataTypes.INTEGER, value=1234)),
18-
Item(kind=ItemTypes.METRIC_ITEM, name='val_water_002', metric=MetricDataItem(
19-
data_type=MetricDataTypes.INTEGER, value=15)),
20-
Item(kind=ItemTypes.METRIC_ITEM, name='bulb_state', metric=MetricDataItem(
21-
data_type=MetricDataTypes.BOOL, value=True)),
22-
Item(kind=ItemTypes.METRIC_ITEM, name='connector_state', metric=MetricDataItem(
23-
data_type=MetricDataTypes.BOOL, value=False)),
24-
Item(kind=ItemTypes.METRIC_ITEM, name='temp_01', metric=MetricDataItem(
25-
data_type=MetricDataTypes.DECIMAL, value=Decimal('34.4'))),
26-
Item(kind=ItemTypes.METRIC_ITEM, name='temp_02', metric=MetricDataItem(
27-
data_type=MetricDataTypes.DECIMAL, value=Decimal('36.4'))),
28-
Item(kind=ItemTypes.METRIC_ITEM, name='temp_03', metric=MetricDataItem(
29-
data_type=MetricDataTypes.DECIMAL, value=Decimal('10.4'))),
30-
Item(kind=ItemTypes.METRIC_ITEM, name='pwr', metric=MetricDataItem(
31-
data_type=MetricDataTypes.DECIMAL, value=Decimal('12.231'))),
32-
Item(kind=ItemTypes.METRIC_ITEM, name='current', metric=MetricDataItem(
33-
data_type=MetricDataTypes.DECIMAL, value=Decimal('1.429'))),
34-
Item(kind=ItemTypes.METRIC_ITEM, name='current_battery', metric=MetricDataItem(
35-
data_type=MetricDataTypes.DECIMAL, value=Decimal('1.548')))]
9+
MSG_1_EXAMPLE = (
10+
"""t|3900237526042,d|device_name_001,m|val_water_001=i:1234,m|val_water_002=i:15,m|bulb_state=b:1,"""
11+
"""m|connector_state=b:0,m|temp_01=d:34.4,m|temp_02=d:36.4,m|temp_03=d:10.4,m|pwr=d:12.231,"""
12+
"""m|current=d:1.429,m|current_battery=d:1.548"""
13+
)
3614

37-
class IoTextCodecTest(TestCase):
15+
MSG_1_EXAMPLE_AS_DATA_STRUCTS = [
16+
Item(kind=ItemTypes.TIMESTAMP_MILIS, name="3900237526042", metric=None),
17+
Item(kind=ItemTypes.DEVICE_ID, name="device_name_001", metric=None),
18+
Item(
19+
kind=ItemTypes.METRIC_ITEM,
20+
name="val_water_001",
21+
metric=MetricDataItem(data_type=MetricDataTypes.INTEGER, value=1234),
22+
),
23+
Item(
24+
kind=ItemTypes.METRIC_ITEM,
25+
name="val_water_002",
26+
metric=MetricDataItem(data_type=MetricDataTypes.INTEGER, value=15),
27+
),
28+
Item(
29+
kind=ItemTypes.METRIC_ITEM,
30+
name="bulb_state",
31+
metric=MetricDataItem(data_type=MetricDataTypes.BOOL, value=True),
32+
),
33+
Item(
34+
kind=ItemTypes.METRIC_ITEM,
35+
name="connector_state",
36+
metric=MetricDataItem(data_type=MetricDataTypes.BOOL, value=False),
37+
),
38+
Item(
39+
kind=ItemTypes.METRIC_ITEM,
40+
name="temp_01",
41+
metric=MetricDataItem(data_type=MetricDataTypes.DECIMAL, value=Decimal("34.4")),
42+
),
43+
Item(
44+
kind=ItemTypes.METRIC_ITEM,
45+
name="temp_02",
46+
metric=MetricDataItem(data_type=MetricDataTypes.DECIMAL, value=Decimal("36.4")),
47+
),
48+
Item(
49+
kind=ItemTypes.METRIC_ITEM,
50+
name="temp_03",
51+
metric=MetricDataItem(data_type=MetricDataTypes.DECIMAL, value=Decimal("10.4")),
52+
),
53+
Item(
54+
kind=ItemTypes.METRIC_ITEM,
55+
name="pwr",
56+
metric=MetricDataItem(
57+
data_type=MetricDataTypes.DECIMAL, value=Decimal("12.231")
58+
),
59+
),
60+
Item(
61+
kind=ItemTypes.METRIC_ITEM,
62+
name="current",
63+
metric=MetricDataItem(
64+
data_type=MetricDataTypes.DECIMAL, value=Decimal("1.429")
65+
),
66+
),
67+
Item(
68+
kind=ItemTypes.METRIC_ITEM,
69+
name="current_battery",
70+
metric=MetricDataItem(
71+
data_type=MetricDataTypes.DECIMAL, value=Decimal("1.548")
72+
),
73+
),
74+
]
3875

3976

77+
class IoTextCodecTest(TestCase):
4078
def test_decode(self):
4179
expected = MSG_1_EXAMPLE_AS_DATA_STRUCTS
4280

@@ -51,4 +89,3 @@ def test_encode(self):
5189
result = IoTextCodec.encode(iotext_msg)
5290

5391
self.assertEqual(expected, result)
54-

tests/codecs/test_metric_data_item_codec.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@
66

77

88
class MetricDataItemCodecTest(TestCase):
9-
109
def test_decode(self):
1110
expected = MetricDataItem(MetricDataTypes.INTEGER, 1234)
12-
msg = 'i:1234'
11+
msg = "i:1234"
1312

1413
result = MetricDataItemCodec.decode(msg)
1514

1615
self.assertEqual(expected, result)
1716

1817
def test_encode(self):
19-
expected = 'd:100.09'
18+
expected = "d:100.09"
2019
mdi = MetricDataItem(MetricDataTypes.DECIMAL, 100.09)
2120

2221
result = MetricDataItemCodec.encode(mdi)
@@ -45,14 +44,14 @@ def test_from_value_type_text(self):
4544
self.assertEqual(expected, result)
4645

4746
def test_from_value_type_bool_true(self):
48-
expected = MetricDataItem(MetricDataTypes.BOOL, '1')
47+
expected = MetricDataItem(MetricDataTypes.BOOL, "1")
4948

5049
result = MetricDataItemCodec.from_value(True)
5150

5251
self.assertEqual(expected, result)
5352

5453
def test_from_value_type_bool_true(self):
55-
expected = MetricDataItem(MetricDataTypes.BOOL, '0')
54+
expected = MetricDataItem(MetricDataTypes.BOOL, "0")
5655

5756
result = MetricDataItemCodec.from_value(False)
5857

0 commit comments

Comments
 (0)