def test_simple_convert(self): c = CanFrameValueExtractor(0, 64) v = c.convert_frame(CanFrame("000", "00")) self.assertEqual(v, 0) v = c.convert_frame(self.deadbeef) self.assertEqual(v, 0xdeadbeefdeadbeef)
def test_simple_convert_floats(self): c = CanFrameValueExtractor(0, 64, a=1.0) v = c.convert_frame(self.deadbeef) self.assertTrue(abs(v - float(0xdeadbeefdeadbeef)) < 1e-19) c = CanFrameValueExtractor(0, 64, a=10.0) v = c.convert_frame(self.deadbeef) self.assertTrue(abs((v/float(0xdeadbeefdeadbeef) - 10.0)) < 1e-19)
def test_all_bits(self): c = CanFrameValueExtractor(0, 64) self.assertEqual(c.convert_frame(self.allbits), 0xffffffffffffffff) for i in range(63): c = CanFrameValueExtractor(i, 1) self.assertEqual(c.convert_frame(self.allbits), 1)
def test_last_bit(self): for i in range(63): c = CanFrameValueExtractor(i, 1) self.assertEqual(c.convert_frame(self.lastbit), 1 if i == 63 else 0)
def test_ford_steering_direction_left(self): c = CanFrameValueExtractor(32, 1) self.assertEqual(0, c.convert_frame(self.sdl))
def test_ford_tps_offset(self): c = CanFrameValueExtractor(4, 12, a=0.1, c=-1000.0) self.assertTrue(abs(c.convert_frame(self.zerotps) + 1000.0) < 1e-19) self.assertTrue(abs(c.convert_frame(self.fulltps) + 900.0) < 1e-19)
def test_ford_tps(self): c = CanFrameValueExtractor(4, 12, a=0.1) self.assertTrue(abs(c.convert_frame(self.zerotps) - 0.0) < 1e-19) self.assertTrue(abs(c.convert_frame(self.fulltps)-100.0) < 1e-19)
def test_simple_custom_transform(self): c = CanFrameValueExtractor(0, 64, custom_transform=lambda x: 0) self.assertEqual(c.convert_frame(self.deadbeef), 0) c = CanFrameValueExtractor(0, 64, custom_transform=lambda x: x-1) self.assertEqual(c.convert_frame(self.deadbeef), 0xdeadbeefdeadbeef - 1)
def test_no_bits(self): c = CanFrameValueExtractor(0, 64) self.assertEqual(c.convert_frame(self.nobits), 0) for i in range(63): c = CanFrameValueExtractor(i, 1) self.assertEqual(c.convert_frame(self.nobits), 0)