def _test_fields(self, init_fields=[], push_fields=[]):
all_fields = init_fields + push_fields
container = self.get_default_container(fields=init_fields, fuzzable=True)
for f in push_fields:
container.push(f)
if isinstance(f, Container):
# default is to pop the container immediatly in the tests...
container.pop()
fields_num_mutations = sum(f.num_mutations() for f in all_fields)
container_num_mutations = container.num_mutations()
self.assertEqual(fields_num_mutations, container_num_mutations)
field_default_values = []
for f in all_fields:
field_default_values.append(f.render())
fields_mutations = []
for i, field in enumerate(all_fields):
prefix = sum(field_default_values[:i])
postfix = sum(field_default_values[i + 1:])
if prefix == 0:
prefix = Bits()
if postfix == 0:
postfix = Bits()
while field.mutate():
fields_mutations.append(prefix + field.render() + postfix)
field.reset()
container_mutations = self.get_all_mutations(container)
self.assertListEqual(fields_mutations, container_mutations)
评论列表
文章目录