Skip to content

Commit

Permalink
Keep int type if factor is 1. Fixes #98.
Browse files Browse the repository at this point in the history
  • Loading branch information
yozik04 committed Mar 12, 2023
1 parent 4ad9461 commit d079322
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 deletions.
5 changes: 4 additions & 1 deletion nibe/coil.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,10 @@ def from_raw_value(coil: Coil, value: int) -> "CoilData":
if coil.has_mappings:
return CoilData.from_mapping(coil, value)

return CoilData(coil, value / coil.factor)
if coil.factor == 1:
return CoilData(coil, value)
else:
return CoilData(coil, value / coil.factor)

@property
def raw_value(self) -> int:
Expand Down
18 changes: 9 additions & 9 deletions tests/test_coil.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,9 +214,9 @@ def test_signed_s16_is_valid(value, expected_raises, coil_signed_s16: Coil):
def test_signed_s16_decode(
raw_value, value, encoder_word_swap_false: CoilDataEncoder, coil_signed_s16: Coil
):
assert encoder_word_swap_false.decode(coil_signed_s16, raw_value) == CoilData(
coil_signed_s16, value
)
actual_coil_data = encoder_word_swap_false.decode(coil_signed_s16, raw_value)
assert actual_coil_data == CoilData(coil_signed_s16, value)
assert isinstance(actual_coil_data.value, float) or actual_coil_data.value is None


@pytest.mark.parametrize(
Expand Down Expand Up @@ -309,9 +309,9 @@ def test_unsigned_u16_encode(
def test_unsigned_u16_word_swap_decode(
raw_value, value, encoder_word_swap: CoilDataEncoder, coil_unsigned_u16: Coil
):
assert encoder_word_swap.decode(coil_unsigned_u16, raw_value) == CoilData(
coil_unsigned_u16, value
)
actual_coil_data = encoder_word_swap.decode(coil_unsigned_u16, raw_value)
assert actual_coil_data == CoilData(coil_unsigned_u16, value)
assert isinstance(actual_coil_data.value, float) or actual_coil_data.value is None


@pytest.mark.parametrize(
Expand Down Expand Up @@ -349,9 +349,9 @@ def coil_signed_s32():
def test_signed_s32_decode(
raw_value, value, encoder_word_swap_false: CoilDataEncoder, coil_signed_s32: Coil
):
assert encoder_word_swap_false.decode(coil_signed_s32, raw_value) == CoilData(
coil_signed_s32, value
)
actual_coil_data = encoder_word_swap_false.decode(coil_signed_s32, raw_value)
assert actual_coil_data == CoilData(coil_signed_s32, value)
assert isinstance(actual_coil_data.value, int) or actual_coil_data.value is None


def test_signed_s32_encode(
Expand Down

0 comments on commit d079322

Please sign in to comment.