def test_parse_pragma_with_string_argument(self): source = '#pragma "-foo"' actual = self.parser.parse(source) expected = pre_ast.File(content=pre_ast.CompositeBlock( [pre_ast.Pragma([ pre_ast.PragmaArgument('"-foo"'), ])])) self.assertEqual(actual, expected)
def test_parse_pragma_with_three_simple_arguments(self): source = '#pragma foo bar baz' actual = self.parser.parse(source) expected = pre_ast.File(content=pre_ast.CompositeBlock([ pre_ast.Pragma([ pre_ast.PragmaArgument('foo'), pre_ast.PragmaArgument('bar'), pre_ast.PragmaArgument('baz'), ]), ]), ) self.assertEqual(actual, expected)
def test_parse_pragma_with_argument_with_empty_arguments_list(self): source = '#pragma foo()' actual = self.parser.parse(source) expected = pre_ast.File(content=pre_ast.CompositeBlock([ pre_ast.Pragma([ pre_ast.PragmaArgument( name='foo', arguments=[], ), ]), ]), ) self.assertEqual(actual, expected)
def test_parse_pragma_with_argument_with_value_assigned(self): source = '#pragma foo=bar' actual = self.parser.parse(source) expected = pre_ast.File(content=pre_ast.CompositeBlock([ pre_ast.Pragma([ pre_ast.PragmaArgument( name='foo', value=c_ast.CVariable('bar'), ), ]), ]), ) self.assertEqual(actual, expected)
def test_parse_pragma_and_text_block(self): source = '\n'.join(( '#pragma foo bar', 'int x;', )) actual = self.parser.parse(source) expected = pre_ast.File(content=pre_ast.CompositeBlock([ pre_ast.Pragma([ pre_ast.PragmaArgument('foo'), pre_ast.PragmaArgument('bar'), ]), pre_ast.TextBlock('int x;'), ]), ) self.assertEqual(actual, expected)
def test_parse_pragma_with_argument_with_natural_number_argument(self): source = '#pragma foo(42)' actual = self.parser.parse(source) expected = pre_ast.File(content=pre_ast.CompositeBlock([ pre_ast.Pragma([ pre_ast.PragmaArgument( name='foo', arguments=[ c_ast.CNumber(42), ], ), ]), ]), ) self.assertEqual(actual, expected)
def test_parse_pragma_with_argument_with_arguments(self): source = '#pragma foo(bar, baz)' actual = self.parser.parse(source) expected = pre_ast.File(content=pre_ast.CompositeBlock([ pre_ast.Pragma([ pre_ast.PragmaArgument( name='foo', arguments=[ c_ast.CVariable('bar'), c_ast.CVariable('baz'), ], ), ]), ]), ) self.assertEqual(actual, expected)
def test_preprocess_pragma(self): pragma = pre_ast.Pragma('some_arguments') actual = self.preprocessing_visitor.preprocess(pragma) self.assertEqual(actual, pragma)
def test_collect_includes_with_pragma(self): node = pre_ast.Pragma('some_arguments') actual = self.include_collector.collect_includes(node) expected = [] self.assertEqual(actual, expected)