summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-10-10 12:01:40 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-10-10 12:01:40 (GMT)
commit0b0f69bd1278b8f5d95c6ea8fb56915148992a77 (patch)
tree0d9ab819a636c6d7bf61e09856283efd1562353a /tests
parent1af362266f616aed07e2661c9676c67dc3365740 (diff)
Updated the basic types definition and its Python bindings.
Diffstat (limited to 'tests')
-rw-r--r--tests/analysis/type.py92
1 files changed, 92 insertions, 0 deletions
diff --git a/tests/analysis/type.py b/tests/analysis/type.py
new file mode 100644
index 0000000..5106cbc
--- /dev/null
+++ b/tests/analysis/type.py
@@ -0,0 +1,92 @@
+#!/usr/bin/python3-dbg
+# -*- coding: utf-8 -*-
+
+
+from chrysacase import ChrysalideTestCase
+from pychrysalide.analysis import DataType
+
+
+class TestDataType(ChrysalideTestCase):
+ """TestCase for analysis.DataType."""
+
+
+ def testTypeSubclassing(self):
+ """Verify the data type subclassing is working."""
+
+ class MyType(DataType):
+
+ def __init__(self, num):
+ super(MyType, self).__init__()
+ self._num = num
+
+ def _to_string(self, include):
+ return '%x' % self._num
+
+ def _dup(self):
+ return MyType(self._num)
+
+ tp = MyType(0x123)
+
+ self.assertEqual(str(tp), '123')
+
+ tp2 = tp.dup()
+
+ self.assertEqual(str(tp), str(tp2))
+
+
+ def testTypeDefaultProperties(self):
+ """Check for default values of some type properties."""
+
+ class MyPropType(DataType):
+ pass
+
+ tp = MyPropType()
+
+ self.assertTrue(tp.handle_namespaces)
+
+ self.assertFalse(tp.is_pointer)
+
+ self.assertFalse(tp.is_reference)
+
+ class MyPropType2(DataType):
+
+ def _handle_namespaces(self):
+ return True
+
+ def _is_pointer(self):
+ return 123 < 1234
+
+ def _is_reference(self):
+ return False
+
+ tp2 = MyPropType2()
+
+ self.assertTrue(tp.handle_namespaces)
+
+ self.assertTrue(tp2.is_pointer)
+
+ self.assertFalse(tp2.is_reference)
+
+
+ def testTypeNamespaces(self):
+ """Test the type namespace property."""
+
+ class MyNSType(DataType):
+
+ def __init__(self, name):
+ super(MyNSType, self).__init__()
+ self._name = name
+
+ def _to_string(self, include):
+ return self._name
+
+ tp = MyNSType('TP')
+ ns = MyNSType('NS')
+
+ self.assertIsNone(tp.namespace)
+
+ tp.namespace = (ns, '.')
+
+ self.assertEqual(str(tp), 'NS.TP')
+
+ self.assertEqual(tp.namespace, (ns, '.'))