summaryrefslogtreecommitdiff
path: root/tests/format/known.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/format/known.py')
-rw-r--r--tests/format/known.py73
1 files changed, 55 insertions, 18 deletions
diff --git a/tests/format/known.py b/tests/format/known.py
index 056238f..3a51f31 100644
--- a/tests/format/known.py
+++ b/tests/format/known.py
@@ -1,6 +1,3 @@
-#!/usr/bin/python3-dbg
-# -*- coding: utf-8 -*-
-
from chrysacase import ChrysalideTestCase
from pychrysalide.analysis.contents import MemoryContent
@@ -11,8 +8,62 @@ class TestKnownFormat(ChrysalideTestCase):
"""TestCase for format.KnownFormat."""
+ def testCustomInstance(self):
+ """Validate a full custom KnownFormat implementation."""
+
+ data = b'\x01\x02\x03'
+ cnt = MemoryContent(data)
+
+
+ class CustomFormat(KnownFormat):
+
+ def _get_key(self):
+ return 'tiny'
+
+ def _get_description(self):
+ return 'Small description'
+
+ cf = CustomFormat(cnt)
+
+ self.assertEqual(cf.key, 'tiny')
+ self.assertEqual(cf.description, 'Small description')
+
+
+ class EmptyCustomFormat(KnownFormat):
+ pass
+
+ cf = EmptyCustomFormat(cnt)
+
+ # NotImplementedError: method implementation is missing for '_get_key'
+ with self.assertRaisesRegex(NotImplementedError, "method implementation is missing for '_get_key'"):
+ k = cf.key
+
+ # NotImplementedError: method implementation is missing for '_get_description'
+ with self.assertRaisesRegex(NotImplementedError, "method implementation is missing for '_get_description'"):
+ k = cf.description
+
+
+ class BadCustomFormat(KnownFormat):
+
+ def _get_key(self):
+ return 123
+
+ def _get_description(self):
+ return 456
+
+ cf = BadCustomFormat(cnt)
+
+ # ValueError: unexpected value type for known format key
+ with self.assertRaisesRegex(ValueError, 'unexpected value type for known format key'):
+ k = cf.key
+
+ # ValueError: unexpected value type for known format description
+ with self.assertRaisesRegex(ValueError, 'unexpected value type for known format description'):
+ k = cf.description
+
+
def testKnownFormatConstructor(self):
- """Build Load a simple content for a flat format."""
+ """Load a simple content for a known format."""
with self.assertRaisesRegex(RuntimeError, 'pychrysalide.format.KnownFormat is an abstract class'):
fmt = KnownFormat()
@@ -28,17 +79,3 @@ class TestKnownFormat(ChrysalideTestCase):
with self.assertRaisesRegex(TypeError, 'unable to convert the provided argument to binary content'):
fmt = MyKnownFormat2(123)
-
- class MyKnownFormatReady(KnownFormat):
- _key = 'rdy'
- def __init2__(self, cnt):
- super(MyKnownFormatReady, self).__init2__(cnt)
-
- data = b'\x00\x00\x00\xef'
-
- cnt = MemoryContent(data)
- fmt = MyKnownFormatReady(cnt)
-
- self.assertIsNotNone(fmt)
-
- self.assertEqual(fmt.key, 'rdy')