package tests.antlrParsers.moduleParser;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import antlr.C.ModuleParser;
public class FunctionParameterTests extends FunctionDefinitionTests
{
@Test
public void testFunctionPtrParam()
{
String input = "int foo(char *(*param)(void)){}";
ModuleParser parser = createParser(input);
String output = parser.function_def().toStringTree(parser);
assertTrue(output
.startsWith("(function_def (return_type (type_name (base_type int))) (function_name (identifier foo)) (function_param_list ( (parameter_decl_clause (parameter_decl (param_decl_specifiers (type_name (base_type char))) (parameter_id (ptrs (ptr_operator *)) ( (parameter_id (ptrs (ptr_operator *)) (parameter_name (identifier param))) ) (type_suffix (param_type_list ( void )))))) )) (compound_statement { }))"));
}
@Test
public void testVoidParamList()
{
String input = "static int altgid(void){}";
ModuleParser parser = createParser(input);
String output = parser.function_def().toStringTree(parser);
System.out.println(output);
assertTrue(output.startsWith("(function_def "));
}
@Test
public void testParamVoidPtr()
{
String input = "static int altgid(void *ptr){}";
ModuleParser parser = createParser(input);
String output = parser.function_def().toStringTree(parser);
assertTrue(output.startsWith("(function_def"));
}
@Test
public void testLinux__user()
{
String input = "static long aio_read_events_ring(struct kioctx *ctx, struct io_event __user *event, long nr){}";
ModuleParser parser = createParser(input);
String output = parser.function_def().toStringTree(parser);
System.out.println(output);
}
@Test
public void testParamConstVoidPtr()
{
String input = "static ssize_t _7z_write_data(struct archive_write *a, const void *buff, size_t s){}";
ModuleParser parser = createParser(input);
String output = parser.function_def().toStringTree(parser);
assertTrue(output.startsWith("(function_def"));
}
}