def test_empty_function_at_file_end(self): output = ''' .directive function_name: ''' self.assertEqual([AsmFunction('function_name')], parse_compiler_asm_output(output))
def test_function_with_trash_after_name(self): output = ''' function_name: @ some characters insn ''' expected = [ AsmFunction('function_name', ['insn']), ] self.assertEqual(expected, parse_compiler_asm_output(output))
def test_function_with_directive(self): output = ''' function_name: .directive ''' expected = [ AsmFunction('function_name'), ] self.assertEqual(expected, parse_compiler_asm_output(output))
def test_empty_function(self): output = ''' function_name: function_name2: ''' expected = [ AsmFunction('function_name'), AsmFunction('function_name2'), ] self.assertEqual(expected, parse_compiler_asm_output(output))
def test_function_with_instructions(self): output = ''' function_name: insn1 insn2 param insn3 param param ''' expected = [ AsmFunction('function_name', ['insn1', 'insn2', 'insn3']), ] self.assertEqual(expected, parse_compiler_asm_output(output))
def test_no_function(self): output = ''' .directive .directive ''' self.assertEqual([], parse_compiler_asm_output(output)) output = ''' .directive insn .directive insn ''' self.assertEqual([], parse_compiler_asm_output(output)) output = ''' .directive insn directive_at_line_begin .directive insn ''' self.assertEqual([], parse_compiler_asm_output(output))
def parse_supported_capabilities(asm, capabilities): functions = parse_compiler_asm_output(asm) function_names = [f.name for f in functions] supported_capabilities = [] for cap in capabilities: if 'has_{0}_cap'.format(cap) in function_names: supported_capabilities.append(cap) elif 'has_no_{0}_cap'.format(cap) in function_names: pass else: raise Exception('Unknown capability {0}'.format(cap)) return supported_capabilities
def parse_test_insns(asm_output, test_list, baseline_test_list): # The result is stored to the insns member of each object in test_list functions = parse_compiler_asm_output(asm_output) for test in test_list + baseline_test_list: function_name = 'test_id_{0}_end'.format(test.ident) found_function = None for fun in functions: if function_name in fun.name: found_function = fun break if found_function is None: raise Exception('Could not find ident {0}'.format(test.ident)) test.insns = InsnCount.from_insn_list(found_function.insns) # subtract baseline for i, (test, baseline_test) in \ enumerate(zip(test_list, baseline_test_list)): test.insns.sub(baseline_test.insns) merge_equivalent_insns(test.insns)
def test_empty(self): self.assertEqual([], parse_compiler_asm_output('')) self.assertEqual([], parse_compiler_asm_output('\n\n'))