From 7781254e01506a47b12c0927ac7f7bb6e2ac092a Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 5 Feb 2020 08:03:06 +0100 Subject: java: tests: remove now redundant tests * tests/javapush.at: here. --- tests/javapush.at | 639 ------------------------------------------------------ 1 file changed, 639 deletions(-) (limited to 'tests') diff --git a/tests/javapush.at b/tests/javapush.at index 940a8886..e3aa49bd 100644 --- a/tests/javapush.at +++ b/tests/javapush.at @@ -235,642 +235,3 @@ AT_CHECK_JAVA_GREP( [[Initial action invoked]], [1]) AT_CLEANUP - - -## ------------------------------ ## -## Calculator with a push parser ## -## ------------------------------ ## - -# Define a single copy of the Calculator grammar. -m4_define([AT_CALC_BODY],[ -%code imports { - import java.io.*; -} - -%code { - static StringReader - getinput(String filename) throws IOException - { - // Yes, there are better alternatives to StringBuffer. But we - // don't really care about performances here, while portability - // to older Java matters. - StringBuffer buf = new StringBuffer(); - FileReader file = new FileReader(filename); - int c; - while (0 < (c = file.read())) - buf.append((char)c); - file.close(); - return new StringReader(buf.toString()); - } -} - -/* Bison Declarations */ -%token NUM "number" -%type exp - -%nonassoc '=' /* comparison */ -%left '-' '+' -%left '*' '/' -%left NEG /* negation--unary minus */ -%right '^' /* exponentiation */ - -/* Grammar follows */ -%% -input: - line -| input line -; - -line: - '\n' -| exp '\n' { System.out.println("total = "+$[]1); } -| error '\n' -; - -exp: - NUM { $[]$ = $[]1;} -| exp '=' exp - { - if ($[]1.intValue() != $[]3.intValue()) - yyerror (]AT_LOCATION_IF([[@$,]])[ "calc: error: " + $[]1 + " != " + $[]3); - } -| exp '+' exp - { $[]$ = new Integer ($[]1.intValue () + $[]3.intValue ()); } -| exp '-' exp - { $[]$ = new Integer ($[]1.intValue () - $[]3.intValue ()); } -| exp '*' exp - { $[]$ = new Integer ($[]1.intValue () * $[]3.intValue ()); } -| exp '/' exp - { $[]$ = new Integer ($[]1.intValue () / $[]3.intValue ()); } -| '-' exp %prec NEG - { $[]$ = new Integer (-$[]2.intValue ()); } -| exp '^' exp - { $[]$ = new Integer ((int)Math.pow ($[]1.intValue (), - $[]3.intValue ())); } -| '(' exp ')' { $[]$ = $[]2;} -| '(' error ')' { $[]$ = new Integer (1111);} -| '!' { $[]$ = new Integer (0); return YYERROR;} -| '-' error { $[]$ = new Integer (0); return YYERROR;} -; -]) - - - -## ------------------------------------- ## -## Calc parser with api.push-pull both. ## -## ------------------------------------- ## - - -# Test that the states transitioned by the push parser are the -# same as for the pull parser. This test is assumed to work -# if it produces the same partial trace of stack states as is -# produced when using pull parsing. The output is verbose, -# but seems essential for verifying push parsing. - -AT_SETUP([Calc parser with api.push-pull both]) -AT_BISON_OPTION_PUSHDEFS - -# Define the calculator input. -# Warning: if you changes the input file -# then the locations test file position numbers -# may be incorrect and you will have -# to modify that file as well. - -AT_DATA([input], -[[1 + 2 * 3 = 7 -1 + 2 * -3 = -5 - --1^2 = -1 -(-1)^2 = 1 - ----1 = -1 - -1 - 2 - 3 = -4 -1 - (2 - 3) = 2 - -2^2^3 = 256 -(2^2)^3 = 64 -]]) - -# Compose pieces to build the actual .y file. -AT_DATA([Calc.y], -[[/* Infix notation calculator--calc */ -%language "Java" - -%define api.parser.class {Calc} -%define parse.trace - -%code { - static class UserLexer implements Calc.Lexer - { - StreamTokenizer st; - StringReader rdr; - - public UserLexer(StringReader reader) - { - rdr = reader; - st = new StreamTokenizer(rdr); - st.resetSyntax(); - st.eolIsSignificant(true); - st.whitespaceChars('\t', '\t'); - st.whitespaceChars(' ', ' '); - st.wordChars('0', '9'); - } - - Integer yylval; - - public Object getLVal() { return yylval; } - - public void yyerror(String msg) { System.err.println(msg); } - - public int yylex () throws IOException - { - switch (st.nextToken()) { - case StreamTokenizer.TT_EOF: return EOF; - case StreamTokenizer.TT_EOL: return (int) '\n'; - case StreamTokenizer.TT_WORD: - yylval = new Integer (st.sval); - return NUM; - default: return st.ttype; - } - } - } -} - -%code { - public static void main (String[] args) - throws IOException - { - StringReader reader = getinput(args[0]); - UserLexer lexer = new UserLexer(reader); - Calc calc = new Calc(lexer); - calc.setDebugLevel(1); - calc.parse(); - }//main -} - -]AT_CALC_BODY[ - -]]) - -# This data was captured from running a pull parser. -AT_DATA([[expout]],[[Stack now 0 -Stack now 0 2 -Stack now 0 9 -Stack now 0 9 19 -Stack now 0 9 19 2 -Stack now 0 9 19 28 -Stack now 0 9 19 28 20 -Stack now 0 9 19 28 20 2 -Stack now 0 9 19 28 20 29 -Stack now 0 9 19 28 -Stack now 0 9 -Stack now 0 9 17 -Stack now 0 9 17 2 -Stack now 0 9 17 26 -Stack now 0 9 -Stack now 0 9 23 -Stack now 0 8 -Stack now 0 7 -Stack now 0 7 2 -Stack now 0 7 9 -Stack now 0 7 9 19 -Stack now 0 7 9 19 2 -Stack now 0 7 9 19 28 -Stack now 0 7 9 19 28 20 -Stack now 0 7 9 19 28 20 3 -Stack now 0 7 9 19 28 20 3 2 -Stack now 0 7 9 19 28 20 3 12 -Stack now 0 7 9 19 28 20 29 -Stack now 0 7 9 19 28 -Stack now 0 7 9 -Stack now 0 7 9 17 -Stack now 0 7 9 17 3 -Stack now 0 7 9 17 3 2 -Stack now 0 7 9 17 3 12 -Stack now 0 7 9 17 26 -Stack now 0 7 9 -Stack now 0 7 9 23 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 4 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 3 -Stack now 0 7 3 2 -Stack now 0 7 3 12 -Stack now 0 7 3 12 22 -Stack now 0 7 3 12 22 2 -Stack now 0 7 3 12 22 31 -Stack now 0 7 3 12 -Stack now 0 7 9 -Stack now 0 7 9 17 -Stack now 0 7 9 17 3 -Stack now 0 7 9 17 3 2 -Stack now 0 7 9 17 3 12 -Stack now 0 7 9 17 26 -Stack now 0 7 9 -Stack now 0 7 9 23 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 5 -Stack now 0 7 5 3 -Stack now 0 7 5 3 2 -Stack now 0 7 5 3 12 -Stack now 0 7 5 14 -Stack now 0 7 5 14 25 -Stack now 0 7 9 -Stack now 0 7 9 22 -Stack now 0 7 9 22 2 -Stack now 0 7 9 22 31 -Stack now 0 7 9 -Stack now 0 7 9 17 -Stack now 0 7 9 17 2 -Stack now 0 7 9 17 26 -Stack now 0 7 9 -Stack now 0 7 9 23 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 4 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 3 -Stack now 0 7 3 3 -Stack now 0 7 3 3 3 -Stack now 0 7 3 3 3 2 -Stack now 0 7 3 3 3 12 -Stack now 0 7 3 3 12 -Stack now 0 7 3 12 -Stack now 0 7 9 -Stack now 0 7 9 17 -Stack now 0 7 9 17 3 -Stack now 0 7 9 17 3 2 -Stack now 0 7 9 17 3 12 -Stack now 0 7 9 17 26 -Stack now 0 7 9 -Stack now 0 7 9 23 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 4 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 2 -Stack now 0 7 9 -Stack now 0 7 9 18 -Stack now 0 7 9 18 2 -Stack now 0 7 9 18 27 -Stack now 0 7 9 -Stack now 0 7 9 18 -Stack now 0 7 9 18 2 -Stack now 0 7 9 18 27 -Stack now 0 7 9 -Stack now 0 7 9 17 -Stack now 0 7 9 17 3 -Stack now 0 7 9 17 3 2 -Stack now 0 7 9 17 3 12 -Stack now 0 7 9 17 26 -Stack now 0 7 9 -Stack now 0 7 9 23 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 2 -Stack now 0 7 9 -Stack now 0 7 9 18 -Stack now 0 7 9 18 5 -Stack now 0 7 9 18 5 2 -Stack now 0 7 9 18 5 14 -Stack now 0 7 9 18 5 14 18 -Stack now 0 7 9 18 5 14 18 2 -Stack now 0 7 9 18 5 14 18 27 -Stack now 0 7 9 18 5 14 -Stack now 0 7 9 18 5 14 25 -Stack now 0 7 9 18 27 -Stack now 0 7 9 -Stack now 0 7 9 17 -Stack now 0 7 9 17 2 -Stack now 0 7 9 17 26 -Stack now 0 7 9 -Stack now 0 7 9 23 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 4 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 2 -Stack now 0 7 9 -Stack now 0 7 9 22 -Stack now 0 7 9 22 2 -Stack now 0 7 9 22 31 -Stack now 0 7 9 22 31 22 -Stack now 0 7 9 22 31 22 2 -Stack now 0 7 9 22 31 22 31 -Stack now 0 7 9 22 31 -Stack now 0 7 9 -Stack now 0 7 9 17 -Stack now 0 7 9 17 2 -Stack now 0 7 9 17 26 -Stack now 0 7 9 -Stack now 0 7 9 23 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 5 -Stack now 0 7 5 2 -Stack now 0 7 5 14 -Stack now 0 7 5 14 22 -Stack now 0 7 5 14 22 2 -Stack now 0 7 5 14 22 31 -Stack now 0 7 5 14 -Stack now 0 7 5 14 25 -Stack now 0 7 9 -Stack now 0 7 9 22 -Stack now 0 7 9 22 2 -Stack now 0 7 9 22 31 -Stack now 0 7 9 -Stack now 0 7 9 17 -Stack now 0 7 9 17 2 -Stack now 0 7 9 17 26 -Stack now 0 7 9 -Stack now 0 7 9 23 -Stack now 0 7 16 -Stack now 0 7 -Stack now 0 7 15 -]]) - -AT_BISON_CHECK([PUSHPULLFLAG [-o Calc.java Calc.y]]) - -AT_JAVA_COMPILE([[Calc.java]]) -# Verify that this is a push parser. -AT_CHECK_JAVA_GREP([[Calc.java]], - [[.*public void push_parse_initialize ().*]]) -# Capture stderr output for comparison purposes. -AT_JAVA_PARSER_CHECK([Calc input], 0, [ignore-nolog], [stderr-nolog]) -# Extract the "Stack Now" lines from the error output, -# send them to stdout (via the sed command) and compare to expout. -# NOTE: because the target is "expout", this macro automatically -# compares the output of the sed command with the contents of -# the file "expout" (defined above). -AT_CHECK([[sed -e '/^Stack now.*$/p' -e d ./stderr]], - [ignore], [expout], [ignore-nolog]) -AT_BISON_OPTION_POPDEFS -AT_CLEANUP - - - -## ---------------------------------------------------------------- ## -## Calc parser with %locations %code lexer and api.push-pull both. ## -## ---------------------------------------------------------------- ## - - -# This test looks for location reporting by looking -# at the lexer output with locations enabled. -# It defines a lexer that reports location info. -AT_SETUP([Calc parser with %locations %code lexer and api.push-pull both]) -AT_BISON_OPTION_PUSHDEFS - -AT_DATA([Calc.y], -[[/* Infix notation calculator--calc. */ -%language "Java" - -%define api.parser.class {Calc} -%define parse.trace -%lex-param { Reader rdr } -%locations - -%code imports { - import java.io.*; -} - -%code lexer { - StreamTokenizer st; - Integer yylval; - - public YYLexer(Reader rdr) - { - st = new StreamTokenizer(rdr); - st.resetSyntax(); - st.eolIsSignificant(true); - st.whitespaceChars('\t', '\t'); - st.whitespaceChars(' ', ' '); - st.wordChars('0', '9'); - } - - Position yypos = new Position (1, 0); - - public Position getStartPos() { return yypos; } - - public Position getEndPos() { return yypos; } - - public Object getLVal() { return yylval; } - - public void yyerror(Location loc, String msg) - { - System.err.println(loc+":"+msg); - } - - public int yylex () throws IOException - { - yypos = new Position (yypos.lineno (),yypos.token () + 1); - switch (st.nextToken()) { - case StreamTokenizer.TT_EOF: - return EOF; - case StreamTokenizer.TT_EOL: - yypos = new Position (yypos.lineno () + 1, 0); - return (int) '\n'; - case StreamTokenizer.TT_WORD: - yylval = new Integer (st.sval); - return NUM; - default: - return st.ttype; - } - } -} - -%code { ]AT_JAVA_POSITION_DEFINE_OLD[ } - -%code { - public static void main (String[] args) - throws IOException - { - StringReader reader = getinput(args[0]); - Calc calc = new Calc(reader); - calc.setDebugLevel(1); - calc.parse(); - } -} - -]AT_CALC_BODY[ - -]]) - -# Define the expected calculator output. -# This should match the output from a pull parser. -AT_DATA([output],[[total = 7 -total = -5 -total = -1 -total = 1 -total = -1 -total = -4 -total = 2 -total = 256 -total = 64 -]]) - -AT_DATA([locations],[[Next token is token "number" (1.1: 1) -Next token is token '+' (1.2: 1) -Next token is token "number" (1.3: 2) -Next token is token '*' (1.4: 2) -Next token is token "number" (1.5: 3) -Next token is token '=' (1.6: 3) -Next token is token '=' (1.6: 3) -Next token is token '=' (1.6: 3) -Next token is token "number" (1.7: 7) -Next token is token '\n' (2.0: 7) -Next token is token '\n' (2.0: 7) -Next token is token "number" (2.1: 1) -Next token is token '+' (2.2: 1) -Next token is token "number" (2.3: 2) -Next token is token '*' (2.4: 2) -Next token is token '-' (2.5: 2) -Next token is token "number" (2.6: 3) -Next token is token '=' (2.7: 3) -Next token is token '=' (2.7: 3) -Next token is token '=' (2.7: 3) -Next token is token '=' (2.7: 3) -Next token is token '-' (2.8: 3) -Next token is token "number" (2.9: 5) -Next token is token '\n' (3.0: 5) -Next token is token '\n' (3.0: 5) -Next token is token '\n' (3.0: 5) -Next token is token '\n' (4.0: 5) -Next token is token '-' (4.1: 5) -Next token is token "number" (4.2: 1) -Next token is token '^' (4.3: 1) -Next token is token "number" (4.4: 2) -Next token is token '=' (4.5: 2) -Next token is token '=' (4.5: 2) -Next token is token '=' (4.5: 2) -Next token is token '-' (4.6: 2) -Next token is token "number" (4.7: 1) -Next token is token '\n' (5.0: 1) -Next token is token '\n' (5.0: 1) -Next token is token '\n' (5.0: 1) -Next token is token '(' (5.1: 1) -Next token is token '-' (5.2: 1) -Next token is token "number" (5.3: 1) -Next token is token ')' (5.4: 1) -Next token is token ')' (5.4: 1) -Next token is token '^' (5.5: 1) -Next token is token "number" (5.6: 2) -Next token is token '=' (5.7: 2) -Next token is token '=' (5.7: 2) -Next token is token "number" (5.8: 1) -Next token is token '\n' (6.0: 1) -Next token is token '\n' (6.0: 1) -Next token is token '\n' (7.0: 1) -Next token is token '-' (7.1: 1) -Next token is token '-' (7.2: 1) -Next token is token '-' (7.3: 1) -Next token is token "number" (7.4: 1) -Next token is token '=' (7.5: 1) -Next token is token '=' (7.5: 1) -Next token is token '=' (7.5: 1) -Next token is token '=' (7.5: 1) -Next token is token '-' (7.6: 1) -Next token is token "number" (7.7: 1) -Next token is token '\n' (8.0: 1) -Next token is token '\n' (8.0: 1) -Next token is token '\n' (8.0: 1) -Next token is token '\n' (9.0: 1) -Next token is token "number" (9.1: 1) -Next token is token '-' (9.2: 1) -Next token is token "number" (9.3: 2) -Next token is token '-' (9.4: 2) -Next token is token '-' (9.4: 2) -Next token is token "number" (9.5: 3) -Next token is token '=' (9.6: 3) -Next token is token '=' (9.6: 3) -Next token is token '-' (9.7: 3) -Next token is token "number" (9.8: 4) -Next token is token '\n' (10.0: 4) -Next token is token '\n' (10.0: 4) -Next token is token '\n' (10.0: 4) -Next token is token "number" (10.1: 1) -Next token is token '-' (10.2: 1) -Next token is token '(' (10.3: 1) -Next token is token "number" (10.4: 2) -Next token is token '-' (10.5: 2) -Next token is token "number" (10.6: 3) -Next token is token ')' (10.7: 3) -Next token is token ')' (10.7: 3) -Next token is token '=' (10.8: 3) -Next token is token '=' (10.8: 3) -Next token is token "number" (10.9: 2) -Next token is token '\n' (11.0: 2) -Next token is token '\n' (11.0: 2) -Next token is token '\n' (12.0: 2) -Next token is token "number" (12.1: 2) -Next token is token '^' (12.2: 2) -Next token is token "number" (12.3: 2) -Next token is token '^' (12.4: 2) -Next token is token "number" (12.5: 3) -Next token is token '=' (12.6: 3) -Next token is token '=' (12.6: 3) -Next token is token '=' (12.6: 3) -Next token is token "number" (12.7: 256) -Next token is token '\n' (13.0: 256) -Next token is token '\n' (13.0: 256) -Next token is token '(' (13.1: 256) -Next token is token "number" (13.2: 2) -Next token is token '^' (13.3: 2) -Next token is token "number" (13.4: 2) -Next token is token ')' (13.5: 2) -Next token is token ')' (13.5: 2) -Next token is token '^' (13.6: 2) -Next token is token "number" (13.7: 3) -Next token is token '=' (13.8: 3) -Next token is token '=' (13.8: 3) -Next token is token "number" (13.9: 64) -Next token is token '\n' (14.0: 64) -Next token is token '\n' (14.0: 64) -Next token is token $end (14.1: 64) -]]) - -# Define the calculator input. -# Warning: if you changes the input file -# then the locations test file position numbers -# may be incorrect and you will have -# to modify that file as well. - -AT_DATA([input], -[[1 + 2 * 3 = 7 -1 + 2 * -3 = -5 - --1^2 = -1 -(-1)^2 = 1 - ----1 = -1 - -1 - 2 - 3 = -4 -1 - (2 - 3) = 2 - -2^2^3 = 256 -(2^2)^3 = 64 -]]) - -AT_BISON_CHECK([PUSHPULLFLAG [-o Calc.java Calc.y]]) -AT_JAVA_COMPILE([[Calc.java]]) -# Verify that this is a push parser -AT_CHECK_JAVA_GREP([[Calc.java]], - [[.*public void push_parse_initialize ().*]]) -# Capture the stdout and stderr output for comparison purposes. -AT_JAVA_PARSER_CHECK([Calc input], 0, [stdout-nolog], [stderr-nolog]) -# 1. Check that the token locations are correct -AT_CHECK([[cp -f ./locations ./expout]],[ignore],[ignore-nolog],[ignore-nolog]) -AT_CHECK([[sed -e '/^Next token.*$/p' -e d ./stderr]],[ignore],[expout],[ignore-nolog]) -# 2. Check that the calculator output matches that of a pull parser -AT_CHECK([[rm -f ./expout; cp -f ./output ./expout]],[ignore],[ignore-nolog],[ignore-nolog]) -AT_CHECK([[cat ./stdout]],[ignore],[expout],[ignore-nolog]) - - -AT_BISON_OPTION_POPDEFS -AT_CLEANUP -- cgit v1.2.1