summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/arch/immediate.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/arch/immediate.py b/tests/arch/immediate.py
new file mode 100755
index 0000000..b3ddc6d
--- /dev/null
+++ b/tests/arch/immediate.py
@@ -0,0 +1,62 @@
+#!/usr/bin/python3-dbg
+# -*- coding: utf-8 -*-
+
+
+import pychrysalide
+from chrysacase import ChrysalideTestCase
+from pychrysalide import arch
+from pychrysalide.arch import ImmOperand
+
+
+
+class TestImmediate(ChrysalideTestCase):
+ """TestCase for arch.ImmOperand."""
+
+
+ def validateValue(self, value, size, padding, syntax, strings):
+ """Check all kinds of things with a given immediate operand."""
+
+ display = [
+ ImmOperand.IOD_BIN, ImmOperand.IOD_OCT,
+ ImmOperand.IOD_DEC,
+ ImmOperand.IOD_HEX
+ ]
+
+ for d in display:
+
+ op = ImmOperand(size, value)
+
+ self.assertTrue(op.size == size)
+ self.assertTrue(op.value == value)
+
+ op.padding = padding
+ op.display = d
+
+ string = op.to_string(syntax)
+ self.assertEqual(string, strings[d])
+
+
+ def testByteOne(self):
+ """Run sanity checks on immediate operand with value 1."""
+
+ strings = {
+ ImmOperand.IOD_BIN: 'b1',
+ ImmOperand.IOD_OCT: '01',
+ ImmOperand.IOD_DEC: '1',
+ ImmOperand.IOD_HEX: '0x1'
+ }
+
+ self.validateValue(1, arch.MDS_8_BITS_UNSIGNED, False, arch.ASX_INTEL, strings)
+
+
+ def testByteOnePadded(self):
+ """Run sanity checks on immediate operand with padded value 1."""
+
+ strings = {
+ ImmOperand.IOD_BIN: 'b00000001',
+ ImmOperand.IOD_OCT: '01',
+ ImmOperand.IOD_DEC: '1',
+ ImmOperand.IOD_HEX: '0x01'
+ }
+
+ self.validateValue(1, arch.MDS_8_BITS_UNSIGNED, True, arch.ASX_INTEL, strings)