def test_checksum_not_valid_if_incorrect(self):
     message_bytes = self.bytes_builder.to_bytes()
     checksum_offset = len(message_bytes) - 2
     current_checksum = message_bytes[checksum_offset]
     message_bytes[checksum_offset] = (current_checksum + 1) % 256
     msg = mtrreader.MtrDataMessage(message_bytes)
     self.assertFalse(msg.is_checksum_valid())
 def test_package_number(self):
     self.default_bytes_builder.package_number = 4660
     new_bytes = self.default_bytes_builder.to_bytes()
     expected_line = self.default_line[0:586] + '0004660'
     line = mtrlog.MtrLogFormatter().format(
         mtrreader.MtrDataMessage(new_bytes), self.datetime_read)
     self.assertEqual(line, expected_line)
 def test_splits_minimal(self):
     self.default_bytes_builder.splits = [(0, 0), (249, 60)]
     new_bytes = self.default_bytes_builder.to_bytes()
     expected_line = (self.default_line[0:86] + '000,00000,249,00060,' +
                      self.default_line[106:])
     line = mtrlog.MtrLogFormatter().format(
         mtrreader.MtrDataMessage(new_bytes), self.datetime_read)
     self.assertEqual(line, expected_line)
 def test_mtr_id(self):
     self.default_bytes_builder.mtr_id = 258
     new_bytes = self.default_bytes_builder.to_bytes()
     expected_line = (self.default_line[0:8] + '"258",' +
                      self.default_line[12:])
     line = mtrlog.MtrLogFormatter().format(
         mtrreader.MtrDataMessage(new_bytes), self.datetime_read)
     self.assertEqual(line, expected_line)
 def test_card_id(self):
     self.default_bytes_builder.card_id = 66308
     new_bytes = self.default_bytes_builder.to_bytes()
     expected_line = (self.default_line[0:12] + '"066308",' +
                      self.default_line[21:69] + '066308,' +
                      self.default_line[76:])
     line = mtrlog.MtrLogFormatter().format(
         mtrreader.MtrDataMessage(new_bytes), self.datetime_read)
     self.assertEqual(line, expected_line)
    def test_splits(self):
        input_splits = [(0, 0), (31, 60), (32, 120), (33, 180), (249, 240)]
        self.bytes_builder.splits = input_splits

        msg = mtrreader.MtrDataMessage(self.bytes_builder.to_bytes())
        output_splits = msg.splits()

        expected_splits = input_splits + 45 * [(0, 0)]
        self.assertEqual(output_splits, expected_splits)
    def test_multiple(self):
        expected_lines = []

        self.default_bytes_builder.package_number = 101
        bytes_msg_1 = self.default_bytes_builder.to_bytes()
        expected_lines.append(self.default_line[0:586] + '0000101')

        self.default_bytes_builder.package_number = 102
        bytes_msg_2 = self.default_bytes_builder.to_bytes()
        expected_lines.append(self.default_line[0:586] + '0000102')

        messages = [
            mtrreader.MtrDataMessage(bytes_msg_1),
            mtrreader.MtrDataMessage(bytes_msg_2)
        ]
        lines = mtrlog.MtrLogFormatter().format_all(messages,
                                                    self.datetime_read)

        self.assertEqual(lines, expected_lines)
 def test_datetime_read(self):
     now = datetime.now()
     self.bytes_builder.datetime_read = now
     msg = mtrreader.MtrDataMessage(self.bytes_builder.to_bytes())
     self.assertEqual(msg.timestamp_year(), now.year % 100)
     self.assertEqual(msg.timestamp_month(), now.month)
     self.assertEqual(msg.timestamp_day(), now.day)
     self.assertEqual(msg.timestamp_hours(), now.hour)
     self.assertEqual(msg.timestamp_minutes(), now.minute)
     self.assertEqual(msg.timestamp_seconds(), now.second)
     self.assertEqual(msg.timestamp_milliseconds(), 0)
 def test_datetime_read(self):
     # subtract more than a year to get different values for all fields
     self.default_bytes_builder.datetime_read -= timedelta(days=366 + 32,
                                                           hours=1,
                                                           minutes=1,
                                                           seconds=1)
     new_bytes = self.default_bytes_builder.to_bytes()
     new_datetime_read = (self.default_bytes_builder.datetime_read.strftime(
         '%d.%m.%y %H:%M:%S.000'))
     expected_line = (self.default_line[0:45] +
                      ('"%s",' % new_datetime_read) +
                      self.default_line[69:])
     line = mtrlog.MtrLogFormatter().format(
         mtrreader.MtrDataMessage(new_bytes), self.datetime_read)
     self.assertEqual(line, expected_line)
    def test_splits_full(self):
        splits = []
        expected_split_string = ''
        for i in range(0, 50):
            control_code = i
            time_at_control = i * 60
            splits.append((control_code, time_at_control))
            expected_split_string += ('%03d,%05d,' %
                                      (control_code, time_at_control))
        self.default_bytes_builder.splits = splits

        new_bytes = self.default_bytes_builder.to_bytes()
        expected_line = (self.default_line[0:86] + expected_split_string +
                         self.default_line[586:])
        line = mtrlog.MtrLogFormatter().format(
            mtrreader.MtrDataMessage(new_bytes), self.datetime_read)
        self.assertEqual(line, expected_line)
 def setUp(self):
     self.datetime_read = datetime.now()
     self.default_bytes_builder = MtrDataBytesBuilder(mtr_id=1, card_id=1)
     self.default_line = mtrlog.MtrLogFormatter().format(
         mtrreader.MtrDataMessage(self.default_bytes_builder.to_bytes()),
         self.datetime_read)
 def test_checksum_valid(self):
     msg = mtrreader.MtrDataMessage(self.bytes_builder.to_bytes())
     self.assertTrue(msg.is_checksum_valid())
 def test_ascii_string(self):
     self.bytes_builder.ascii_string = "This is a test"
     msg = mtrreader.MtrDataMessage(self.bytes_builder.to_bytes())
     self.assertEqual(msg.ascii_string(), "This is a test".ljust(56))
 def test_card_id(self):
     self.bytes_builder.card_id = 131586
     msg = mtrreader.MtrDataMessage(self.bytes_builder.to_bytes())
     self.assertEqual(msg.card_id(), 131586)
 def test_packet_num(self):
     self.bytes_builder.package_number = 39
     msg = mtrreader.MtrDataMessage(self.bytes_builder.to_bytes())
     self.assertEqual(msg.packet_num(), 39)
 def test_mtr_id(self):
     self.bytes_builder.mtr_id = 33145
     msg = mtrreader.MtrDataMessage(self.bytes_builder.to_bytes())
     self.assertEqual(msg.mtr_id(), 33145)