def test_encode_binary(self): ctrl_unit = ControlUnit() ctrl_unit.imei = 351535057252702L ctrl_unit.driver = 1121 ctrl_unit.event = 10 ctrl_unit.unixtime = 1447501929 ctrl_unit.sat = 11 ctrl_unit.lat = 41.694336 ctrl_unit.lon = 12.599915 ctrl_unit.speed = 11.2 ctrl_unit.gasoline_r = 200.1 ctrl_unit.gasoline_l = 300.2 ctrl_unit.gasoline_f = 400.3 ctrl_unit.vin = 25.8 ctrl_unit.vbatt = 4.26 ctrl_unit.input_gasoline_r = 500.2 ctrl_unit.input_gasoline_l = 600.3 ctrl_unit.input_gasoline_f = 700.4 ctrl_unit.input_gasoline_tot = 8888 ctrl_unit.cup_r = ControlUnit.CUP_FAIL ctrl_unit.cup_l = ControlUnit.CUP_OPEN ctrl_unit.cup_f = ControlUnit.CUP_CLOSE ctrl_unit.engine = ControlUnit.ENGINE_ON ctrl_unit.alarm = ControlUnit.ALARM_UNARMED ctrl_unit.cup_lock = ControlUnit.CAPS_UNLOCKED ctrl_unit.distance_travelled = 365.1 ctrl_unit.gas_station = 5 ctrl_unit.text_message = "Come va la trasmissione binaria?" ctrl_unit.plate = "AB324LR" # Evento di base result = ctrl_unit.encode_binary() self.assertEqual(result, True) self.assertEqual( ctrl_unit.output_packet, binascii.unhexlify( '32025EB13622B83F010061040A692047560B00C72642409949417000D107BA0BA30F0201AA018A1373175C1BB8226E00430E' ) ) # Rifornimento ctrl_unit.event = 0x13 result = ctrl_unit.encode_binary() self.assertEqual(result, True) self.assertEqual( ctrl_unit.output_packet, binascii.unhexlify( '33025EB13622B83F0100610413692047560B00C72642409949417000D107BA0BA30F0201AA018A1373175C1BB8226E00430E05' ) ) # Messaggio di testo ctrl_unit.event = 0x14 result = ctrl_unit.encode_binary() self.assertEqual(result, True) self.assertEqual( ctrl_unit.output_packet, binascii.unhexlify( 'B4025EB13622B83F0100610414692047560B00C72642409949417000D107BA0BA30F0201AA018A1373175C1BB8226E00430E' '436F6D65207661206C6120747261736D697373696F6E652062696E617269613F000000000000000000000000000000000000' '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' '000000000000000000000000000000000000000000000000000000000000' ) ) # Messaggio di rifornimento da cisterna ctrl_unit.event = 0x15 result = ctrl_unit.encode_binary() self.assertEqual(result, True) self.assertEqual( ctrl_unit.output_packet, binascii.unhexlify( '46025EB13622B83F0100610415692047560B00C72642409949417000D107BA0BA30F0201AA018A1373175C1BB8226E00430E' '41423332344C5200000000000000000000000000' ) )
def test_check_values(self): ctrl_unit = ControlUnit() # Inizializzo le variabili ctrl_unit.imei = 351535057252702L ctrl_unit.driver = 1121 ctrl_unit.event = 7 ctrl_unit.unixtime = 1447501929 ctrl_unit.sat = 11 ctrl_unit.lat = 41.694336 ctrl_unit.lon = 12.599915 ctrl_unit.speed = 11.2 ctrl_unit.gasoline_r = 200.1 ctrl_unit.gasoline_l = 300.2 ctrl_unit.gasoline_f = 400.3 ctrl_unit.vin = 25.8 ctrl_unit.vbatt = 4.26 ctrl_unit.input_gasoline_r = 500.2 ctrl_unit.input_gasoline_l = 600.3 ctrl_unit.input_gasoline_f = 700.4 ctrl_unit.input_gasoline_tot = 8888 ctrl_unit.cup_r = ctrl_unit.CUP_CLOSE ctrl_unit.cup_l = ctrl_unit.CUP_OPEN ctrl_unit.cup_f = ctrl_unit.CUP_CLOSE ctrl_unit.engine = ctrl_unit.ENGINE_ON ctrl_unit.alarm = ctrl_unit.ALARM_UNARMED ctrl_unit.cup_lock = ctrl_unit.CAPS_UNLOCKED ctrl_unit.distance_travelled = 365.1 ctrl_unit.gas_station = 5 ctrl_unit.text_message = "Come va la trasmissione binaria?" ctrl_unit.plate = "AB324LR" # Provo a sbagliare lunghezza del campo IMEI, poi lo rendo alfanumerico, poi lo correggo ctrl_unit.imei = 35153505725270L with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.imei = 3515350572527021L with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.imei = "351535a57252702" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.imei = 351535057252702L result = ctrl_unit.check_values() self.assertEqual(result, True) # Parliamo ora del codice autista ctrl_unit.driver = "asd" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.driver = 10000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.driver = 1121 result = ctrl_unit.check_values() self.assertEqual(result, True) # Vediamo l'evento ctrl_unit.event = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.event = 256 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.event = 7 result = ctrl_unit.check_values() self.assertEqual(result, True) # La data ctrl_unit.unixtime = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.unixtime = 1447501929 result = ctrl_unit.check_values() self.assertEqual(result, True) # Il numero di satelliti ctrl_unit.sat = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.sat = 256 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.sat = 7 result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo la latitudine ctrl_unit.lat = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.lat = 90.01 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.lat = 91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.lat = -90.01 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.lat = -91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.lat = 41.694336 result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo la longitudine ctrl_unit.lon = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.lon = 181.01 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.lon = 182 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.lon = -181.01 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.lon = -182 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.lon = 12.599915 result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo la velocità ctrl_unit.speed = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.speed = 999.91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.speed = 1000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.speed = 11.2 result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo il carburante presente a destra, sinistra, e nel frigo ctrl_unit.gasoline_r = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.gasoline_r = 999.91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.gasoline_r = 1000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.gasoline_r = 200.1 result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.gasoline_l = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.gasoline_l = 999.91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.gasoline_l = 1000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.gasoline_l = 300.2 result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.gasoline_f = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.gasoline_f = 999.91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.gasoline_f = 1000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.gasoline_f = 400.3 result = ctrl_unit.check_values() self.assertEqual(result, True) # Controlliamo la tensione in ingresso ctrl_unit.vin = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.vin = 99.91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.vin = 100 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.vin = 25.8 result = ctrl_unit.check_values() self.assertEqual(result, True) # Controlliamo la tensione della batteria interna ctrl_unit.vbatt = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.vbatt = 9.991 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.vbatt = 10 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.vbatt = 4.26 result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo il carburante presente a destra, sinistra, e nel frigo e totale ctrl_unit.input_gasoline_r = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.input_gasoline_r = 999.91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.input_gasoline_r = 1000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.input_gasoline_r = 500.2 result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.input_gasoline_l = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.input_gasoline_l = 999.91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.input_gasoline_l = 1000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.input_gasoline_l = 600.3 result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.input_gasoline_f = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.input_gasoline_f = 999.91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.input_gasoline_f = 1000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.input_gasoline_f = 700.4 result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.input_gasoline_tot = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.input_gasoline_tot = 10000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.input_gasoline_tot = 8888 result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo lo stato dei tappi ctrl_unit.cup_r = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.cup_r = 4 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.cup_r = ctrl_unit.CUP_OPEN result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_r = ctrl_unit.CUP_CLOSE result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_r = ctrl_unit.CUP_FAIL result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_r = ctrl_unit.CUP_FAIL result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_l = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.cup_l = 4 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.cup_l = ctrl_unit.CUP_CLOSE result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_l = ctrl_unit.CUP_OPEN result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_l = ctrl_unit.CUP_FAIL result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_l = ctrl_unit.CUP_FAIL result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_f = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.cup_f = 4 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.cup_f = ctrl_unit.CUP_OPEN result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_f = ctrl_unit.CUP_CLOSE result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_f = ctrl_unit.CUP_FAIL result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_f = ctrl_unit.CUP_FAIL result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo lo stato del motore ctrl_unit.engine = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.engine = 2 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.engine = ctrl_unit.ENGINE_OFF result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.engine = ctrl_unit.ENGINE_ON result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo lo stato dell'allarme ctrl_unit.alarm = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.alarm = 2 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.alarm = ctrl_unit.ALARM_ARMED result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.alarm = ctrl_unit.ALARM_UNARMED result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo lo stato del blocco tappi ctrl_unit.cup_lock = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.cup_lock = 2 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.cup_lock = ctrl_unit.CAPS_LOCKED result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.cup_lock = ctrl_unit.CAPS_UNLOCKED result = ctrl_unit.check_values() self.assertEqual(result, True) # Controllo la distanza percorsa ctrl_unit.distance_travelled = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.distance_travelled = 9999.91 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.distance_travelled = 10000 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.distance_travelled = 365.1 result = ctrl_unit.check_values() self.assertEqual(result, True) # Vediamo l'ID della stazione di servizio ctrl_unit.gas_station = "a" with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.gas_station = 100 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.gas_station = -1 with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.gas_station = 5 result = ctrl_unit.check_values() self.assertEqual(result, True) # Vediamo il messaggio di test per la chat ctrl_unit.text_message = 2.12 with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.text_message = 256 with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.text_message = 256L with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.text_message = "Questo messaggio di testo può essere arbitrariamente lungo e contenere al massimo" \ " 130 caratteri, ma questa eccede il limite fissato di 14 bytes" with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.text_message = "5" result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.text_message = "Questo messaggio di testo può essere arbitrariamente lungo e contenere al massimo " \ "130 caratteri, e questo non eccede il limite!!!" result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.text_message = "" result = ctrl_unit.check_values() self.assertEqual(result, True) # Vediamo la targa ctrl_unit.plate = 2.12 with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.plate = 256 with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.plate = 256L with self.assertRaises(TypeError): ctrl_unit.check_values() ctrl_unit.plate = "La targa dovrebbe essere una stringa di max 20 caratteri (vedi ad esempio i rimorchi)" with self.assertRaises(ValueError): ctrl_unit.check_values() ctrl_unit.plate = "5" result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.plate = "20 caratteri sono OK" result = ctrl_unit.check_values() self.assertEqual(result, True) ctrl_unit.plate = "" result = ctrl_unit.check_values() self.assertEqual(result, True)
def test_encode_ascii(self): ctrl_unit = ControlUnit() ctrl_unit.imei = 351535057252702L ctrl_unit.driver = 1121 ctrl_unit.event = 10 ctrl_unit.unixtime = 1447501929 ctrl_unit.sat = 11 ctrl_unit.lat = 41.694336 ctrl_unit.lon = 12.599915 ctrl_unit.speed = 11.2 ctrl_unit.gasoline_r = 200.1 ctrl_unit.gasoline_l = 300.2 ctrl_unit.gasoline_f = 400.3 ctrl_unit.vin = 25.8 ctrl_unit.vbatt = 4.26 ctrl_unit.input_gasoline_r = 500.2 ctrl_unit.input_gasoline_l = 600.3 ctrl_unit.input_gasoline_f = 700.4 ctrl_unit.input_gasoline_tot = 8888 ctrl_unit.cup_r = ControlUnit.CUP_CLOSE ctrl_unit.cup_l = ControlUnit.CUP_OPEN ctrl_unit.cup_f = ControlUnit.CUP_FAIL ctrl_unit.engine = ControlUnit.ENGINE_ON ctrl_unit.alarm = ControlUnit.ALARM_UNARMED ctrl_unit.cup_lock = ControlUnit.CAPS_UNLOCKED ctrl_unit.distance_travelled = 365.1 ctrl_unit.gas_station = 5 ctrl_unit.text_message = "Questo e' un messaggio di testo" ctrl_unit.plate = "AB324LR" # Evento di base result = ctrl_unit.encode_ascii() self.assertEqual(result, True) self.assertEqual( ctrl_unit.output_packet, "A5790135153505725270211210A201511141152091141416602N012359949E0112200130024003258426500260037004888801F1" "UUUU00UUUUUU03651" ) # Rifornimento ctrl_unit.event = 0x13 result = ctrl_unit.encode_ascii() self.assertEqual(result, True) self.assertEqual( ctrl_unit.output_packet, "A57B01351535057252702112113201511141152091141416602N012359949E0112200130024003258426500260037004888801F1" "UUUU00UUUUUU0365105" ) # Messaggio di testo ctrl_unit.event = 0x14 result = ctrl_unit.encode_ascii() self.assertEqual(result, True) self.assertEqual( ctrl_unit.output_packet, "A59901351535057252702112114201511141152091141416602N012359949E0112200130024003258426500260037004888801F1" "UUUU00UUUUUU03651Questo e' un messaggio di testo$" ) # Messaggio di rifornimento da cisterna ctrl_unit.event = 0x15 result = ctrl_unit.encode_ascii() self.assertEqual(result, True) self.assertEqual( ctrl_unit.output_packet, "A58101351535057252702112115201511141152091141416602N012359949E0112200130024003258426500260037004888801F1" "UUUU00UUUUUU03651AB324LR$" )