def setUp(self): self.test_report = reports.Report() # declaring all files self.test_files = set( [files.File("test_file.c"), files.File("second.c")]) for file_ in self.test_files: file_.validity = False # declaring all functions self.functions = { "test_file.c": functions.Function("test_file.c", "func"), "second.c": functions.Function("second.c", "second") } self.functions["test_file.c"].validity = False self.functions["second.c"].validity = False # adding one function to each file for file_ in self.test_files: file_.functions.add(self.functions[file_.name])
def setUp(self): xml_parser = etree.XMLParser(remove_comments=True) self.tree = etree.parse("samples/sample.xml", parser=xml_parser) self.rules_tree = etree.parse( "samples/rules_sample.xml", parser=xml_parser ) self.test_func = functions.Function( r"STV\Trieuse\stv\src\ttpdsext.c", "initttpdsext()" )
def test_load_metrics(self): """ test the load_metrics method """ # The asked function doesn't exist in the sample file my_bad_func = functions.Function( r"STV\Trieuse\stv\src\ttpdsext.c", "initttpxt()" ) with self.assertRaises(functions.FunctionNotFound): my_bad_func.load_metrics(self.tree) self.test_func.load_metrics(self.tree) self.assertEqual(self.test_func.metrics.complexity, 6) self.assertEqual(self.test_func.metrics.statements, 25) self.assertEqual(self.test_func.metrics.maximum_depth, 4) self.assertEqual(self.test_func.metrics.calls, 0)
def test_add_bad_function(self): """ test the add_bad_function """ second_test_func = functions.Function("test_file.c", "second") report = self.test_report report.add_bad_function(self.functions["test_file.c"]) self.assertEqual(report.nb_bad_functions, 1) self.assertEqual(report.nb_bad_functions_for_file["test_file.c"], 1) self.assertEqual(len(report.bad_functions), 1) self.assertEqual(len(report.bad_functions["test_file.c"]), 1) report.add_bad_function(second_test_func) self.assertEqual(report.nb_bad_functions, 2) self.assertEqual(report.nb_bad_functions_for_file["test_file.c"], 2) self.assertEqual(len(report.bad_functions), 1) self.assertEqual(len(report.bad_functions["test_file.c"]), 2)
def test_search_tree(self): """ Test for the search_tree method used to search a specific function's tree """ my_bad_func = functions.Function( r"STV\Trieuse\stv\src\ttpdsext.c", "test()" ) with self.assertRaises(functions.FunctionNotFound): my_bad_func.search_tree(self.tree) self.assertEqual( etree.tostring(self.test_func.search_tree(self.tree)), b'<function name="initttpdsext()" line="35">\n' + b' <complexity>6</complexity>\n' + b' <statements>25</statements>\n' + b' <maximum_depth>4</maximum_depth>\n' + b' <calls>0</calls>\n' + b' </function>\n ' )
def test_load_specific_rules(self): """ Test for the load_specific_rules method of the Function class """ with self.assertRaises(rules_reader.BadRulesFormat): self.test_func.load_default_rules(self.tree) # function that has no specific rules no_rules_func = functions.Function( r"STV\Trieuse\stv\src\ttpdsext.c", "majtabpdsext()" ) no_rules_func.load_specific_rules(self.rules_tree) self.assertEqual(no_rules_func.rules.complexity, 10) self.assertEqual(no_rules_func.rules.statements, 5) self.assertEqual(no_rules_func.rules.maximum_depth, "disable") self.assertEqual(no_rules_func.rules.calls, "disable") # We don't pre-load the default rules, load_specific_rules will do it self.test_func.load_specific_rules(self.rules_tree) self.assertEqual(self.test_func.rules.complexity, 5) self.assertEqual(self.test_func.rules.statements, 5) self.assertEqual(self.test_func.rules.maximum_depth, "disable") self.assertEqual(self.test_func.rules.calls, "disable")