diff options
Diffstat (limited to 'tests/format')
| -rw-r--r-- | tests/format/format.py | 66 | 
1 files changed, 66 insertions, 0 deletions
| diff --git a/tests/format/format.py b/tests/format/format.py new file mode 100644 index 0000000..b6aad8f --- /dev/null +++ b/tests/format/format.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) | 
