Пример #1
0
class Test_using_muliple_base_extensions(unittest.TestCase):
    def setUp(self):
        self.ext = FanInOut()
        self.lizard_object = FileAnalyzer(get_extensions(
            ["io", "ns", "nd"])).analyze_source_code(
                "a.cpp", """int foo(){
                                                                              bar();
                                                                              if(a){
                                                                                  b;
                                                                              }
                                                                          }
                                                              int bar(){foo();};"""
            )

    def test_reduce_func_in_lizardio(self):
        lizard_object = None
        self.assertRaises((AttributeError, TypeError, ValueError),
                          self.ext.reduce(lizard_object))

    def test_all_extention_simultaneously(self):

        self.ext.reduce(self.lizard_object)
        correct_max_nd = {'foo': 1, 'bar': 0}
        correct_max_nested_struct = {'foo': 1, 'bar': 0}
        correct_fan_out = {'foo': 1, 'bar': 1}
        correct_general_fan_out = {'foo': 1, 'bar': 1}
        correct_fan_in = {'foo': 1, 'bar': 1}
        self.assertDictEqual(
            correct_max_nd, {
                func.name: func.max_nesting_depth
                for func in self.lizard_object.function_list
            })
        self.assertDictEqual(
            correct_max_nested_struct, {
                func.name: func.max_nested_structures
                for func in self.lizard_object.function_list
            })
        self.assertDictEqual(correct_fan_out, {
            func.name: func.fan_out
            for func in self.lizard_object.function_list
        })
        self.assertDictEqual(
            correct_general_fan_out, {
                func.name: func.general_fan_out
                for func in self.lizard_object.function_list
            })
        self.assertDictEqual(correct_fan_in, {
            func.name: func.fan_in
            for func in self.lizard_object.function_list
        })