summaryrefslogtreecommitdiff
path: root/tests/format/program.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/format/program.py')
-rw-r--r--tests/format/program.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/format/program.py b/tests/format/program.py
new file mode 100644
index 0000000..b6aad8f
--- /dev/null
+++ b/tests/format/program.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python3-dbg
+# -*- coding: utf-8 -*-
+
+
+# Tests minimalistes pour valider la gestion des erreurs relevées.
+
+
+from chrysacase import ChrysalideTestCase
+from pychrysalide.arch import vmpa, mrange
+from pychrysalide.format import BinFormat
+from pychrysalide.format import BinSymbol
+import os
+import sys
+
+
+class SimpleFormat(BinFormat):
+ pass
+
+
+class TestFormatErrors(ChrysalideTestCase):
+ """TestCase for format.BinFormat."""
+
+
+ def create_fake_symbol(self, index):
+ saddr = vmpa(index * 0x10, vmpa.VMPA_NO_VIRTUAL)
+ srange = mrange(saddr, 0x3)
+ symbol = BinSymbol(BinSymbol.STP_ENTRY_POINT, srange)
+ return symbol
+
+
+ def testBasicSymbolOperations(self):
+ """Deal with the basic operations related to symbols in a binary format."""
+
+ sf = SimpleFormat()
+
+ self.assertTrue(len(list(sf.symbols)) == 0)
+
+ symbols = [ self.create_fake_symbol(i) for i in range(4) ]
+ s0, s1, s2, s3 = symbols
+
+ for s in symbols:
+ sf.add_symbol(s)
+
+ self.assertTrue(len(list(sf.symbols)) == len(symbols))
+
+ sf.remove_symbol(s2)
+
+ self.assertTrue(list(sf.symbols) == [s0, s1, s3])
+
+
+ def testBadParamsForAdding(self):
+ """Check if bad parameters fail for adding a new symbol."""
+
+ sf = SimpleFormat()
+
+ with self.assertRaises(TypeError):
+ sf.add_symbol('s')
+
+
+ def testWrongRemoval(self):
+ """Try to remove a wrong symbol from a format."""
+
+ sf = SimpleFormat()
+
+ s23 = self.create_fake_symbol(23)
+ sf.remove_symbol(s23)