mirror of
https://github.com/vivisect/vivisect
synced 2026-06-08 18:04:23 +00:00
65 lines
1.7 KiB
Python
65 lines
1.7 KiB
Python
import os
|
|
import binascii
|
|
import unittest
|
|
|
|
import vstruct
|
|
import vstruct.cparse as vs_cparse
|
|
import vstruct.builder as vs_builder
|
|
|
|
|
|
csrc_simple = '''
|
|
struct monty {
|
|
int life;
|
|
char of;
|
|
long brian;
|
|
};
|
|
'''
|
|
|
|
csrc_nested = '''
|
|
struct python {
|
|
unsigned short meaning;
|
|
struct andthe {
|
|
unsigned long int of;
|
|
char life[20];
|
|
} holygrail;
|
|
int hollywood[64];
|
|
unsigned char bow[5];
|
|
};
|
|
'''
|
|
|
|
|
|
class VstructBuilderTest(unittest.TestCase):
|
|
|
|
def test_init(self):
|
|
simple = vs_cparse.ctorFromCSource(csrc_simple)
|
|
nested = vs_cparse.ctorFromCSource(csrc_nested)
|
|
|
|
bldr = vs_builder.VStructBuilder()
|
|
bldr.addVStructCtor('pe.simple', simple)
|
|
bldr.addVStructCtor('elf.nested', nested)
|
|
self.assertEqual(set(['pe.simple', 'elf.nested']), set(bldr.getVStructNames()))
|
|
|
|
bldr.delVStructCtor('elf.nested')
|
|
self.assertEqual(['pe.simple'], bldr.getVStructNames())
|
|
|
|
def test_constructor(self):
|
|
pass
|
|
|
|
def test_namespaces(self):
|
|
bldr = vs_builder.VStructBuilder()
|
|
subb = vs_builder.VStructBuilder()
|
|
|
|
bldr.addVStructNamespace('subname', subb)
|
|
bldr.addVStructNamespace('dupname', subb)
|
|
self.assertTrue(bldr.hasVStructNamespace('subname'))
|
|
self.assertEqual(set(bldr.getVStructNamespaces()), set([('subname', subb), ('dupname', subb)]))
|
|
self.assertEqual(set(bldr.getVStructNamespaceNames()), set(['subname', 'dupname']))
|
|
|
|
nested = vs_cparse.ctorFromCSource(csrc_nested)
|
|
bldr.addVStructCtor('foo', nested)
|
|
self.assertEqual(bldr.getVStructCtorNames(), ['foo'])
|
|
|
|
def test_get_pycode(self):
|
|
# TODO: Windows CI
|
|
pass
|