summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/format/executable.py59
-rw-r--r--tests/glibext/portion.py17
2 files changed, 76 insertions, 0 deletions
diff --git a/tests/format/executable.py b/tests/format/executable.py
new file mode 100644
index 0000000..ec42ccd
--- /dev/null
+++ b/tests/format/executable.py
@@ -0,0 +1,59 @@
+
+from chrysacase import ChrysalideTestCase
+from pychrysalide.analysis.contents import MemoryContent
+from pychrysalide.arch import vmpa
+from pychrysalide.format import ExecutableFormat
+
+
+class TestExecutableFormat(ChrysalideTestCase):
+ """TestCase for format.ExecutableFormat."""
+
+
+ def testMainAddresses(self):
+ """Provide several kinds of main addresses."""
+
+ data = b'\x00\x00\x00\xef'
+ cnt = MemoryContent(data)
+
+
+ class CustomFormatVmpa(ExecutableFormat):
+
+ def _get_main_address(self):
+ return vmpa(246, 357)
+
+ cf = CustomFormatVmpa(cnt)
+
+ self.assertEqual(cf.main_address.phys, 246)
+ self.assertEqual(cf.main_address.virt, 357)
+
+
+ class CustomFormatInt(ExecutableFormat):
+
+ def _get_main_address(self):
+ return 123
+
+ cf = CustomFormatInt(cnt)
+
+ self.assertIsNone(cf.main_address.phys)
+ self.assertEqual(cf.main_address.virt, 123)
+
+
+ class CustomFormatNone(ExecutableFormat):
+
+ def _get_main_address(self):
+ return None
+
+ cf = CustomFormatNone(cnt)
+
+ self.assertIsNone(cf.main_address)
+
+
+ class CustomFormatBad(ExecutableFormat):
+
+ def _get_main_address(self):
+ return 'bad'
+
+ cf = CustomFormatBad(cnt)
+
+ with self.assertRaisesRegex(Exception, 'unable to define a value for the main address'):
+ ma = cf.main_address
diff --git a/tests/glibext/portion.py b/tests/glibext/portion.py
new file mode 100644
index 0000000..3e91969
--- /dev/null
+++ b/tests/glibext/portion.py
@@ -0,0 +1,17 @@
+
+from chrysacase import ChrysalideTestCase
+from pychrysalide.arch import vmpa
+from pychrysalide.glibext import BinaryPortion
+
+
+class TestWorks(ChrysalideTestCase):
+ """TestCase for pychrysalide.glibext.BinaryPortion"""
+
+ def testBasicBinaryPortion(self):
+ """Implement a basic binary portion."""
+
+ addr = vmpa(0, vmpa.VmpaSpecialValue.NO_VIRTUAL)
+
+ p = BinaryPortion(addr, 10)
+
+ self.assertEqual(p.range.addr, addr)