def test_loadEmptyFile(self):
        log = LogFile()
        log.createLogfile("empty.test")

        log2 = LogFile()
        log2.loadFromFile("empty.test")
        self.assertTrue(log2.isBrokenFile())
    def test_createRandomDataFileNoGPS(self):
        log = LogFile()
        log.createLogfile("Random_NoGPS.test")
        time = range(100)
        speed = np.random.randint(100, size=100).tolist()
        rpm = np.random.randint(5000, size=100).tolist()
        load = np.random.randint(100, size=100).tolist()
        maf = np.random.randint(100, size=100).tolist()
        temp = np.random.randint(30, size=100).tolist()
        pedal = np.random.randint(100, size=100).tolist()
        afr = [1] * 100
        fuel_lvl = np.random.randint(100, size=100).tolist()
        gps_long = [None] * 100
        gps_lat = [None] * 100
        gps_alt = [None] * 100
        gps_time = [None] * 100
        internal_temp = np.random.randint(30, size=100).tolist()
        vin = ["MF0DXXGAKDJP09111"] * 100
        for i in range(0, len(speed)):
            log.addData([
                time[i], speed[i], rpm[i], load[i], maf[i], temp[i], pedal[i],
                afr[i], fuel_lvl[i], gps_long[i], gps_lat[i], gps_alt[i],
                gps_time[i], internal_temp[i], vin[i]
            ])

        log.appendFile()
        log2 = LogFile()
        log2.loadFromFile(log.getfilename())
        speed_csv = log2.getLabelData(signals.SPEED.name)
        afr_csv = log2.getLabelData(signals.COMMANDED_EQUIV_RATIO.name)
        temp_csv = log2.getLabelData(signals.AMBIANT_AIR_TEMP.name)
        rpm_csv = log2.getLabelData(signals.RPM.name)
        load_csv = log2.getLabelData(signals.ENGINE_LOAD.name)
        maf_csv = log2.getLabelData(signals.MAF.name)
        pedal_csv = log2.getLabelData(signals.RELATIVE_ACCEL_POS.name)
        fuel_lvl_csv = log2.getLabelData(signals.FUEL_LEVEL.name)
        gps_long_csv = log2.getLabelData(signals.GPS_Long.name)
        gps_lat_csv = log2.getLabelData(signals.GPS_Lat.name)
        gps_alt_csv = log2.getLabelData(signals.GPS_Alt.name)
        gps_time_csv = log2.getLabelData(signals.GPS_Time.name)
        internal_temp_csv = log2.getLabelData(signals.INTERNAL_AIR_TEMP.name)
        vin_csv = log2.getLabelData(signals.VIN.name)

        self.assertTrue(log2.isBrokenFile())
        self.assertEqual(speed_csv, speed)
        self.assertEqual(afr_csv, afr)
        self.assertEqual(temp_csv, temp)
        self.assertEqual(rpm_csv, rpm)
        self.assertEqual(load_csv, load)
        self.assertEqual(maf_csv, maf)
        self.assertEqual(pedal_csv, pedal)
        self.assertEqual(fuel_lvl_csv, fuel_lvl)
        self.assertEqual(gps_long_csv, gps_long)
        self.assertEqual(gps_lat_csv, gps_lat)
        self.assertEqual(gps_alt_csv, gps_alt)
        self.assertEqual(gps_time_csv, gps_time)
        self.assertEqual(internal_temp_csv, internal_temp)
        self.assertEqual(vin_csv, vin)
        self.assertEqual(log2._VIN, "MF0DXXGAKDJP09111")
    def test_createZerosDataFile(self):
        log = LogFile()
        log.createLogfile("Zeros.test")
        time = range(100)
        speed = [0] * 100
        rpm = [0] * 100
        load = [0] * 100
        maf = [0] * 100
        temp = [0] * 100
        pedal = [0] * 100
        afr = [0] * 100
        fuel_lvl = [None] * 100
        gps_long = [None] * 100
        gps_lat = [None] * 100
        gps_alt = [None] * 100
        gps_time = [None] * 100
        internal_temp = [None] * 100
        vin = ["VIN12FBASSF13"] * 100
        for i in range(0, len(speed)):
            log.addData([
                time[i], speed[i], rpm[i], load[i], maf[i], temp[i], pedal[i],
                afr[i], fuel_lvl[i], gps_long[i], gps_lat[i], gps_alt[i],
                gps_time[i], internal_temp[i], vin[i]
            ])

        log.appendFile()

        log2 = LogFile()
        log2.loadFromFile(log.getfilename())
        speed_csv = log2.getLabelData(signals.SPEED.name)
        afr_csv = log2.getLabelData(signals.COMMANDED_EQUIV_RATIO.name)
        temp_csv = log2.getLabelData(signals.AMBIANT_AIR_TEMP.name)
        rpm_csv = log2.getLabelData(signals.RPM.name)
        load_csv = log2.getLabelData(signals.ENGINE_LOAD.name)
        maf_csv = log2.getLabelData(signals.MAF.name)
        pedal_csv = log2.getLabelData(signals.RELATIVE_ACCEL_POS.name)
        fuel_lvl_csv = log2.getLabelData(signals.FUEL_LEVEL.name)
        gps_long_csv = log2.getLabelData(signals.GPS_Long.name)
        gps_lat_csv = log2.getLabelData(signals.GPS_Lat.name)
        gps_alt_csv = log2.getLabelData(signals.GPS_Alt.name)
        gps_time_csv = log2.getLabelData(signals.GPS_Time.name)
        internal_temp_csv = log2.getLabelData(signals.INTERNAL_AIR_TEMP.name)
        vin_csv = log2.getLabelData(signals.VIN.name)

        self.assertTrue(log2.isBrokenFile())
        self.assertEqual(speed_csv, speed)
        self.assertEqual(afr_csv, afr)
        self.assertEqual(temp_csv, temp)
        self.assertEqual(rpm_csv, rpm)
        self.assertEqual(load_csv, load)
        self.assertEqual(maf_csv, maf)
        self.assertEqual(pedal_csv, pedal)
        self.assertEqual(fuel_lvl_csv, fuel_lvl)
        self.assertEqual(gps_long_csv, gps_long)
        self.assertEqual(gps_lat_csv, gps_lat)
        self.assertEqual(gps_alt_csv, gps_alt)
        self.assertEqual(gps_time_csv, gps_time)
        self.assertEqual(internal_temp_csv, internal_temp)
        self.assertEqual(vin_csv, vin)
 def test_isBrokenFile_NoGPS(self):
     log = LogFile()
     log.loadFromFile("Random_NoGPS.test")
     broken = log.isBrokenFile()
     self.assertTrue(broken)
 def test_isBrokenFile_OK(self):
     log = LogFile()
     log.loadFromFile("Random.test")
     broken = log.isBrokenFile()
     self.assertFalse(broken)
 def test_isBrokenFile_NoRPM(self):
     log = LogFile()
     log.loadFromFile("Zeros.test")
     broken = log.isBrokenFile()
     self.assertTrue(broken)
    print(env.PATH)
    # Create an object of the class LogFile --> logging
    log = LogFile()
    # Get the file names of the LogFile
    files = LogFile.getFilenames()
    print(files)

    ### Transfer every CSV file to server

    # For every file of the LogFile
    for file in files:
        # Load the file from the LogFile: Loads the data from the csv file
        log.loadFromFile(file)

        ### Delete Files without content
        if (log.isBrokenFile()):
            # If the file path exists, delete it and write the action to the log
            if os.path.exists(env.PATH + file):
                os.remove(env.PATH + file)
                print("[DELETE] broken file: " + str(file))
                with open(env.PATH + "LOG.log", "a") as f:
                    f.write("[DELETE]: " + str(file) +
                            " - File was broken (No GPS or RPM signals) " +
                            "\n")
            continue

        ### Transfer of JSON to server

        # If file has content, transfer the data to a JSON object
        filename = log.transferToJson()
        print(filename)