Skip to content

Commit

Permalink
Merge pull request #349 from Daimler/encode_decoded
Browse files Browse the repository at this point in the history
  • Loading branch information
juleq committed Oct 8, 2021
2 parents ef08c59 + d4cb560 commit 37baa97
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
4 changes: 2 additions & 2 deletions cantools/database/can/signal.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,10 @@ def comments(self):
return self._comments

def __str__(self):
return self._name
return f"{self._name}"

def __repr__(self):
return f"{self._name}"
return f"'{self._name}'"

def __eq__(self, x):
if isinstance(x, NamedSignalValue):
Expand Down
3 changes: 3 additions & 0 deletions cantools/database/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import binascii
from decimal import Decimal
from collections import namedtuple
from cantools.database.can.signal import NamedSignalValue

try:
import bitstruct.c
Expand Down Expand Up @@ -50,6 +51,8 @@ def _encode_field(field, data, scaling):

if isinstance(value, str):
return field.choice_string_to_number(value)
elif isinstance(value, NamedSignalValue):
return field.choice_string_to_number(str(value))
elif scaling:
if field.is_float:
return (value - field.offset) / field.scale
Expand Down
9 changes: 9 additions & 0 deletions tests/test_database.py
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,11 @@ def test_motohawk_encode_decode(self):
decode_choices=False)
self.assertEqual(decoded, decoded_message)

# check that encode(decode(encode(decoded))) == encode(decoded)
encoded2 = db.encode_message(example_message_frame_id, decoded)
self.assertEqual(encoded2, encoded)


# Encode with enumerated values.
decoded_message = {
'Temperature': 250.55,
Expand All @@ -520,6 +525,10 @@ def test_motohawk_encode_decode(self):
decoded = db.decode_message(example_message_frame_id, encoded)
self.assertEqual(decoded, decoded_message)

# check that encode(decode(data)) == data
encoded2 = db.encode_message(example_message_frame_id, decoded)
self.assertEqual(encoded2, encoded)

# By name.
encoded = db.encode_message(example_message_name, decoded_message)
self.assertEqual(encoded, encoded_message)
Expand Down

0 comments on commit 37baa97

Please sign in to comment.