Exemple #1
0
 def setUp(self):
     self.reader = FakeReader()
     self.ext = Fans()
     self.test_dir = tempfile.mkdtemp()
     self.body = ['{\n', '\tif (a && b){\n', '\tfun(a);\n',
                  '\tif( a != 0 ){\n', '\n', '\ta = b;\n',
                  '\t c = a;\n', '\t}\n', '}\n']
Exemple #2
0
 def setUp(self):
     self.reader = FakeReader()
     self.ext = Fans()
     self.test_dir = tempfile.mkdtemp()
     self.body = [
         '{\n', '\tif (a && b){\n', '\tfun(a);\n', '\tif( a != 0 ){\n',
         '\n', '\ta = b;\n', '\t c = a;\n', '\t}\n', '}\n'
     ]
Exemple #3
0
class TestFans(unittest.TestCase):
    def setUp(self):
        self.reader = FakeReader()
        self.ext = Fans()
        self.test_dir = tempfile.mkdtemp()
        self.body = ['{\n', '\tif (a && b){\n', '\tfun(a);\n',
                     '\tif( a != 0 ){\n', '\n', '\ta = b;\n',
                     '\t c = a;\n', '\t}\n', '}\n']

    def tearDown(self):
        # Terminate the temporary after tests
        shutil.rmtree(self.test_dir)

    def test_tokens(self):
        self.tokens = list(self.ext(["a", "b"], self.reader))
        self.assertEqual(['a', 'b'], self.tokens)

    def test_fans_initiation(self):
        list(self.ext(["a", "b"], self.reader))
        self.assertEqual((0, 0), self.reader.get_fan_in_fan_out())

    def test_empty_body(self):
        result = get_cpp_function_list_with_fans_extension("a.cpp",
                                                           "int fun(a){})")
        body = self.ext.method_open(result[0])
        self.assertEqual([], body)

    def test_open_function_with_body(self):
        f = open(path.join(self.test_dir, 'a.cpp'), 'w+')
        f.writelines("""int c() {
    if (a && b) {
        if( a != 0 ){
            a = b;
        }
    }
}
        """)
        f = open(path.join(self.test_dir, 'a.cpp'))
        result = get_cpp_function_list_with_fans_extension(f.name, f.read())
        f.close()
        body = self.ext.method_open(result[0])
        self.assertEqual(body, ['    if (a && b) {\n',
                                '        if( a != 0 ){\n',
                                '            a = b;\n',
                                '        }\n',
                                '    }\n',
                                '}\n'])

    def test_fan_in_fan_out_only_result(self):
        result = get_cpp_fans_extension("""int fun(a){}
                                        int bar(a){}""")
        self.ext.calculate_fan_in_fan_out(['fun', 'bar'],
                                          self.body, result,
                                          result.function_list[1])
        self.assertEqual(1, result.function_list[0].fan_in)
        self.assertEqual(0, result.function_list[0].fan_out)
        self.assertEqual(0, result.function_list[1].fan_in)
        self.assertEqual(1, result.function_list[1].fan_out)

    def test_single_dual_fans_result(self):
        result = get_cpp_fans_extension("""int fun(a){}""")
        self.body[6] = '\t bar(a)\n'
        self.ext.calculate_fan_in_fan_out(['fun'],
                                          self.body, result,
                                          result.function_list[0])
        self.assertEqual(1, result.function_list[0].fan_in)
        self.assertEqual(1, result.function_list[0].fan_out)

    def test_multi_body_method_result_part1(self):
        result = get_cpp_fans_extension("""int fun(a){}
                                        int bar(a){}""")
        self.body[6] = '\t bar(a)\n'
        self.ext.calculate_fan_in_fan_out(['fun', 'bar'],
                                          self.body, result,
                                          result.function_list[0])
        self.assertEqual(1, result.function_list[0].fan_in)
        self.assertEqual(2, result.function_list[0].fan_out)
        self.assertEqual(1, result.function_list[1].fan_in)
        self.assertEqual(0, result.function_list[1].fan_out)

    def test_multi_body_method_result_part2(self):
        result = get_cpp_fans_extension("""int fun(a){}
                                        int bar(a){}""")
        self.body[6] = '\t fun(a)\n'
        self.ext.calculate_fan_in_fan_out(['fun', 'bar'],
                                          self.body, result,
                                          result.function_list[1])
        self.assertEqual(2, result.function_list[0].fan_in)
        self.assertEqual(0, result.function_list[0].fan_out)
        self.assertEqual(0, result.function_list[1].fan_in)
        self.assertEqual(2, result.function_list[1].fan_out)

    def test_multi_functions_with_similar_function_name_results(self):
        result = get_cpp_fans_extension("""int fun(a){}
                                        int bar(a){}
                                        int foobar(c){}""")
        self.body[6] = '\t fun(a)\n'
        self.body[7] = '\t foo(a)\n'
        self.ext.calculate_fan_in_fan_out(['fun', 'bar', 'foobar'],
                                          self.body, result,
                                          result.function_list[0])
        self.assertEqual(2, result.function_list[0].fan_in)
        self.assertEqual(2, result.function_list[0].fan_out)
        self.assertEqual(0, result.function_list[1].fan_in)
        self.assertEqual(0, result.function_list[1].fan_out)
        self.assertEqual(0, result.function_list[2].fan_in)
        self.assertEqual(0, result.function_list[2].fan_out)
Exemple #4
0
class TestFans(unittest.TestCase):
    def setUp(self):
        self.reader = FakeReader()
        self.ext = Fans()
        self.test_dir = tempfile.mkdtemp()
        self.body = [
            '{\n', '\tif (a && b){\n', '\tfun(a);\n', '\tif( a != 0 ){\n',
            '\n', '\ta = b;\n', '\t c = a;\n', '\t}\n', '}\n'
        ]

    def tearDown(self):
        # Terminate the temporary after tests
        shutil.rmtree(self.test_dir)

    def test_tokens(self):
        self.tokens = list(self.ext(["a", "b"], self.reader))
        self.assertEqual(['a', 'b'], self.tokens)

    def test_fans_initiation(self):
        list(self.ext(["a", "b"], self.reader))
        self.assertEqual((0, 0), self.reader.get_fan_in_fan_out())

    def test_empty_body(self):
        result = get_cpp_function_list_with_fans_extension(
            "a.cpp", "int fun(a){})")
        body = self.ext.method_open(result[0])
        self.assertEqual([], body)

    def test_open_function_with_body(self):
        f = open(path.join(self.test_dir, 'a.cpp'), 'w+')
        f.writelines("""int c() {
    if (a && b) {
        if( a != 0 ){
            a = b;
        }
    }
}
        """)
        f = open(path.join(self.test_dir, 'a.cpp'))
        result = get_cpp_function_list_with_fans_extension(f.name, f.read())
        f.close()
        body = self.ext.method_open(result[0])
        self.assertEqual(body, [
            '    if (a && b) {\n', '        if( a != 0 ){\n',
            '            a = b;\n', '        }\n', '    }\n', '}\n'
        ])

    def test_fan_in_fan_out_only_result(self):
        result = get_cpp_fans_extension("""int fun(a){}
                                        int bar(a){}""")
        self.ext.calculate_fan_in_fan_out(['fun', 'bar'], self.body, result,
                                          result.function_list[1])
        self.assertEqual(1, result.function_list[0].fan_in)
        self.assertEqual(0, result.function_list[0].fan_out)
        self.assertEqual(0, result.function_list[1].fan_in)
        self.assertEqual(1, result.function_list[1].fan_out)

    def test_single_dual_fans_result(self):
        result = get_cpp_fans_extension("""int fun(a){}""")
        self.body[6] = '\t bar(a)\n'
        self.ext.calculate_fan_in_fan_out(['fun'], self.body, result,
                                          result.function_list[0])
        self.assertEqual(1, result.function_list[0].fan_in)
        self.assertEqual(1, result.function_list[0].fan_out)

    def test_multi_body_method_result_part1(self):
        result = get_cpp_fans_extension("""int fun(a){}
                                        int bar(a){}""")
        self.body[6] = '\t bar(a)\n'
        self.ext.calculate_fan_in_fan_out(['fun', 'bar'], self.body, result,
                                          result.function_list[0])
        self.assertEqual(1, result.function_list[0].fan_in)
        self.assertEqual(2, result.function_list[0].fan_out)
        self.assertEqual(1, result.function_list[1].fan_in)
        self.assertEqual(0, result.function_list[1].fan_out)

    def test_multi_body_method_result_part2(self):
        result = get_cpp_fans_extension("""int fun(a){}
                                        int bar(a){}""")
        self.body[6] = '\t fun(a)\n'
        self.ext.calculate_fan_in_fan_out(['fun', 'bar'], self.body, result,
                                          result.function_list[1])
        self.assertEqual(2, result.function_list[0].fan_in)
        self.assertEqual(0, result.function_list[0].fan_out)
        self.assertEqual(0, result.function_list[1].fan_in)
        self.assertEqual(2, result.function_list[1].fan_out)

    def test_multi_functions_with_similar_function_name_results(self):
        result = get_cpp_fans_extension("""int fun(a){}
                                        int bar(a){}
                                        int foobar(c){}""")
        self.body[6] = '\t fun(a)\n'
        self.body[7] = '\t foo(a)\n'
        self.ext.calculate_fan_in_fan_out(['fun', 'bar', 'foobar'], self.body,
                                          result, result.function_list[0])
        self.assertEqual(2, result.function_list[0].fan_in)
        self.assertEqual(2, result.function_list[0].fan_out)
        self.assertEqual(0, result.function_list[1].fan_in)
        self.assertEqual(0, result.function_list[1].fan_out)
        self.assertEqual(0, result.function_list[2].fan_in)
        self.assertEqual(0, result.function_list[2].fan_out)