class AntRawDataAccessTest(unittest.TestCase):
    def setUp(self):
        if os.path.isfile("simple-test-data.h5"):
            unlink("simple-test-data.h5")
        logging.info("AntRawDataAccess Test")
        self.awriter = AntRawDataAccess("simple-test-data.h5", "/test")

    def tearDown(self):
        self.awriter.close()

    def test_write(self):
        self.awriter.write(["1", "2", "3", "4", "5", "6", "7", "8", "9", 14334546])

    def test_readline(self):
        writerData = ["1", "2", "3", "4", "5", "6", "7", "8", "9", 14334546]
        self.awriter.write(writerData)
        self.awriter.close()
        self.awriter = AntRawDataAccess("simple-test-data.h5", "/test")
        data = self.awriter.readlines()

        logging.debug(data)
        logging.debug(data.dtype)
        # readindices = [column[0] for column in data.dtype.items()]
        # logging.debug(readindices)
        logging.debug(data[0])
        data = list(data[0])
        writerPacket = [ord(number) for number in writerData if isinstance(number, str)]
        expected = writerPacket + [writerData[-1]]
        self.assertEqual(expected.sort(), data.sort())

    def test_readline_complex(self):
        writerData = ["1", "2", "3", "4", "5", "6", "7", "8", "9", 14334546]
        self.awriter.close()
        unlink("simple-test-data.h5")
        self.awriter = AntRawDataAccess("simple-test-data.h5", "/test/again")
        self.awriter.write(writerData)
        self.awriter.close()

        self.awriter = AntRawDataAccess("simple-test-data.h5", "/test")
        data = self.awriter.readlines()

        self.assertEqual(len(data), 0)

        logging.debug("Setting the run: ")
        self.awriter.setRunName("/test/again")
        logging.debug("Reading /test/again")
        data = self.awriter.readlines()
        logging.debug("The Data: " + str(data))
        data = list(data[0])
        writerPacket = [ord(number) for number in writerData if isinstance(number, str)]
        expected = writerPacket + [writerData[-1]]
        self.assertEqual(expected.sort(), data.sort())

    def test_write_parsed(self):
        if exists("sample-tmp.h5"):
            unlink("sample-tmp.h5")
        copyfile("test-data/sample.h5", "sample-tmp.h5")
        self.areader = AntRawDataAccess("sample-tmp.h5", "/test/goldenembeded")
        self.awriter = AntParsedDataAccess("sample-tmp.h5", "/test/goldenembeded")

        for raw in self.areader:
            parsed = parse_sample_interpret(raw)
            logging.debug(parsed)
            logging.debug("Parsed Time Stamp: " + str(parsed["Timestamp"]))
            self.awriter.write(parsed)

        for rawData, parsedData in zip(self.areader, self.awriter):
            self.assertEqual(rawData["Timestamp"], parsedData["Timestamp"])