diff test/testhexfile.py @ 284:05184b95fa16

Moved tests to seperate folder
author Windel Bouwman
date Fri, 15 Nov 2013 13:43:22 +0100
parents python/testhexfile.py@046017431c6a
children 534b94b40aa8
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/testhexfile.py	Fri Nov 15 13:43:22 2013 +0100
@@ -0,0 +1,102 @@
+import unittest
+import io
+from hexfile import HexFile, HexFileException
+
+
+class testHexFile(unittest.TestCase):
+    def saveload(self, hf):
+        f = io.StringIO()
+        hf.save(f)
+        hf2 = HexFile()
+        hf2.load(io.StringIO(f.getvalue()))
+        self.assertEqual(hf, hf2)
+
+    def testSave1(self):
+        hf = HexFile()
+        hf.addRegion(0x8000, bytes.fromhex('aabbcc'))
+        self.saveload(hf)
+
+    def testSave2(self):
+        hf = HexFile()
+        hf.addRegion(0x8000, bytes.fromhex('aabbcc'))
+        hf.addRegion(0x118000, bytes.fromhex('aabbcc'))
+        self.saveload(hf)
+
+    def testSave3(self):
+        hf = HexFile()
+        hf.addRegion(0x8000, bytes.fromhex('aabbcc'))
+        hf.addRegion(0xFFFE, bytes.fromhex('aabbcc'))
+        self.saveload(hf)
+
+    def testSave4(self):
+        hf = HexFile()
+        hf.addRegion(0xF000, bytes.fromhex('ab')*0x10000)
+        self.saveload(hf)
+
+    def testSave5(self):
+        hf = HexFile()
+        hf.addRegion(0xF003, bytes.fromhex('ab')*0x10000)
+        self.saveload(hf)
+
+    def testMerge(self):
+        hf = HexFile()
+        hf.addRegion(0x10, bytes.fromhex('abcdab'))
+        hf.addRegion(0x13, bytes.fromhex('abcdab'))
+        self.assertEqual(1, len(hf.regions))
+
+    def testOverlapped(self):
+        hf = HexFile()
+        hf.addRegion(0x10, bytes.fromhex('abcdab'))
+        with self.assertRaisesRegex(HexFileException, 'verlap'):
+            hf.addRegion(0x12, bytes.fromhex('abcdab'))
+
+    def testEqual(self):
+        hf1 = HexFile()
+        hf2 = HexFile()
+        hf1.addRegion(10, bytes.fromhex('aabbcc'))
+        hf2.addRegion(10, bytes.fromhex('aabbcc'))
+        self.assertEqual(hf1, hf2)
+
+    def testNotEqual(self):
+        hf1 = HexFile()
+        hf2 = HexFile()
+        hf1.addRegion(10, bytes.fromhex('aabbcc'))
+        hf2.addRegion(10, bytes.fromhex('aabbdc'))
+        self.assertNotEqual(hf1, hf2)
+
+    def testNotEqual2(self):
+        hf1 = HexFile()
+        hf2 = HexFile()
+        hf1.addRegion(10, bytes.fromhex('aabbcc'))
+        hf2.addRegion(10, bytes.fromhex('aabbcc'))
+        hf2.addRegion(22, bytes.fromhex('aabbcc'))
+        self.assertNotEqual(hf1, hf2)
+
+    def testLoad(self):
+        hf = HexFile()
+        dummyhex = """
+        :01400000aa15
+        """
+        f = io.StringIO(dummyhex)
+        hf.load(f)
+        self.assertEqual(1, len(hf.regions))
+        self.assertEqual(0x4000, hf.regions[0].address)
+        self.assertSequenceEqual(bytes.fromhex('aa'), hf.regions[0].data)
+
+    def testIncorrectCrc(self):
+        hf = HexFile()
+        txt = ":01400000aabb"
+        f = io.StringIO(txt)
+        with self.assertRaisesRegex(HexFileException, 'crc'):
+            hf.load(f)
+
+    def testIncorrectLength(self):
+        hf = HexFile()
+        txt = ":0140002200aabb"
+        f = io.StringIO(txt)
+        with self.assertRaisesRegex(HexFileException, 'count'):
+            hf.load(f)
+
+if __name__ == '__main__':
+    unittest.main()
+