Пример #1
0
 def _single_field_helper(self, field_type, field_name):
     name = 'Msg'
     definition = '''
         message {} {{
             required {} {} = 1;
         }}'''.format(name, field_type, field_name)
     permuter = protofuzz.from_description_string(definition)[name]
     return permuter.linear(limit=10)
Пример #2
0
    def test_repeated_msg(self):
        name = 'Msg'
        definition = '''
            message Inner {{ required int32 val = 1; }}
            message {} {{ repeated Inner val = 1; }}
        '''.format(name)

        messages = protofuzz.from_description_string(definition)

        for msg in messages[name].linear(limit=10):
            self.assertIsInstance(msg.val[0].val, int)
Пример #3
0
 def test_floating_point(self):
     'Test basic doubles'
     name = 'Msg'
     definition = '''
         message {} {{
             required double dbl = 1;
             required float fl = 2;
         }}'''.format(name)
     messages = protofuzz.from_description_string(definition)
     for msg in messages[name].linear():
         self.assertIsInstance(msg.dbl, float)
         self.assertIsInstance(msg.fl, float)
Пример #4
0
    def test_enum(self):
        'Make sure all enum values are enumerated in linear permutation'
        enum_values = [0, 1, 2]
        definition = '''
        message Message {{
            enum Colors {{ RED = {}; GREEN = {}; BLUE = {}; }}
            required Colors color = 1;
        }}
        '''.format(*enum_values)

        messages = protofuzz.from_description_string(definition)

        all_values = [obj.color for obj in messages['Message'].linear()]

        self.assertEqual(all_values, enum_values)
Пример #5
0
    def test_custom_ints(self):
        'Test a custom int generator'
        old_intvalues = values._fuzzdb_integers
        try:
            custom_vals = [1, 2, 3, 4]

            def custom_ints(limit=0):
                return iter(custom_vals)

            values._fuzzdb_integers = custom_ints

            name = 'Msg'
            definition = 'message {} {{required int32 val = 1;}}'.format(name)
            messages = protofuzz.from_description_string(definition)
            results = [x.val for x in messages[name].linear()]

            self.assertEqual(results, custom_vals)
        finally:
            values._fuzzdb_integers = old_intvalues
Пример #6
0
 def test_repeated(self):
     name = 'Msg'
     definition = 'message {} {{ repeated string val = 1; }}'.format(name)
     messages = protofuzz.from_description_string(definition)
     for msg in messages[name].linear(limit=10):
         self.assertIsInstance(msg.val[0], str)
Пример #7
0
    def test_from_string(self):
        'Make sure we can create protofuzz generators from string'
        messages = protofuzz.from_description_string(self._description)

        self.assertIn('Message', messages)
        self.assertIn('Other', messages)
Пример #8
0
    def permuter_helper(self, method):
        messages = protofuzz.from_description_string(self._description)
        permuter = messages['Message']

        self.assertTrue(len(list(method(permuter))) > 0)