def test_wrong_packets(self):

        ctrl_unit = ControlUnit()

        input_mex = "A57901351535057249088000050201512160653500000000000N000000000E0000605647080419055409" \
                    "0000000000000000FFFF1UUU00UUUUUU00000"

        ctrl_unit.decode_ascii(input_mex)

        input_mex = "32025891f8333b440100000001f3cd7256000000000000000000000010000e001d008100a3010000000000000000ec000000"

        ctrl_unit.decode_binary(binascii.unhexlify(input_mex))

        # !linea 696 elif self.cup_lock == ControlUnit.CAPS_UNLOCKED: senza el!!!!
        input_mex = "A57901351535057248759000016201005082359590000000000N000000000E00000042003200322423170000000000000000FFF1FUUU11UUUUUU00000"
        ctrl_unit.decode_ascii(input_mex)
        ctrl_unit.check_values()
        ctrl_unit.encode_binary()

        input_mex = "A57901351535057209884000001201512201500090841426506N012350963E00000001000000001754170000000000000000F0FFFUUU00UUUUUU00000"

        ctrl_unit.decode_ascii(input_mex)
        ctrl_unit.check_values()
        ctrl_unit.encode_binary()
    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)