add sorting lab test
This commit is contained in:
parent
82a7e11dba
commit
265d7df073
|
|
@ -313,3 +313,272 @@ UTEST(scanner, quadratic) {
|
|||
++index;
|
||||
} while (t != TOKEN_EOF);
|
||||
}
|
||||
|
||||
UTEST(scanner, sorting) {
|
||||
struct token_st tokens[] = {
|
||||
{TOKEN_IDENTIFICATION, "IDENTIFICATION"},
|
||||
{TOKEN_KEYWORD_DIVISION, "DIVISION"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_PROGRAM_ID, "PROGRAM-ID"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_IDENT, "sorting"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_KEYWORD_DATA, "DATA"},
|
||||
{TOKEN_KEYWORD_DIVISION, "DIVISION"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_WORKING_STORAGE, "WORKING-STORAGE"},
|
||||
{TOKEN_KEYWORD_SECTION, "SECTION"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_INTEGER, "01"},
|
||||
{TOKEN_IDENT, "WS-SORT-AREA"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_INTEGER, "05"},
|
||||
{TOKEN_IDENT, "WS-SORT-TABLE"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_INTEGER, "10"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_PICTURE, "PIC"},
|
||||
{TOKEN_ALPHANUMERIC, "X"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "10"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_KEYWORD_OCCURS, "OCCURS"},
|
||||
{TOKEN_INTEGER, "100"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_INTEGER, "05"},
|
||||
{TOKEN_IDENT, "WS-TEMP-ROW"},
|
||||
{TOKEN_PICTURE, "PIC"},
|
||||
{TOKEN_ALPHANUMERIC, "X"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "10"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_INTEGER, "05"},
|
||||
{TOKEN_IDENT, "WS-ROW-MAX"},
|
||||
{TOKEN_PICTURE, "PIC"},
|
||||
{TOKEN_SIGNED_NUMERIC, "S9"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "4"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_COMPUTATION_LEVEL_0, "COMP"},
|
||||
{TOKEN_KEYWORD_VALUE, "VALUE"},
|
||||
{TOKEN_INTEGER, "100"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_INTEGER, "05"},
|
||||
{TOKEN_IDENT, "WS-SORT-MAX"},
|
||||
{TOKEN_PICTURE, "PIC"},
|
||||
{TOKEN_SIGNED_NUMERIC, "S9"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "4"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_COMPUTATION_LEVEL_0, "COMP"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_INTEGER, "05"},
|
||||
{TOKEN_IDENT, "WS-I"},
|
||||
{TOKEN_PICTURE, "PIC"},
|
||||
{TOKEN_SIGNED_NUMERIC, "S9"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "4"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_COMPUTATION_LEVEL_0, "COMP"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_INTEGER, "05"},
|
||||
{TOKEN_IDENT, "WS-J"},
|
||||
{TOKEN_PICTURE, "PIC"},
|
||||
{TOKEN_SIGNED_NUMERIC, "S9"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "4"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_COMPUTATION_LEVEL_0, "COMP"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_INTEGER, "05"},
|
||||
{TOKEN_IDENT, "WS-INDEX"},
|
||||
{TOKEN_PICTURE, "PIC"},
|
||||
{TOKEN_SIGNED_NUMERIC, "S9"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "4"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_COMPUTATION_LEVEL_0, "COMP"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_PROCEDURE, "PROCEDURE"},
|
||||
{TOKEN_KEYWORD_DIVISION, "DIVISION"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_COMMENT, "*> Initialize test data"},
|
||||
{TOKEN_MOVE, "MOVE"},
|
||||
{TOKEN_STRING, "\"30\""},
|
||||
{TOKEN_KEYWORD_TO, "TO"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_MOVE, "MOVE"},
|
||||
{TOKEN_STRING, "\"10\""},
|
||||
{TOKEN_KEYWORD_TO, "TO"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "2"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_MOVE, "MOVE"},
|
||||
{TOKEN_STRING, "\"50\""},
|
||||
{TOKEN_KEYWORD_TO, "TO"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "3"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_MOVE, "MOVE"},
|
||||
{TOKEN_STRING, "\"20\""},
|
||||
{TOKEN_KEYWORD_TO, "TO"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "4"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_MOVE, "MOVE"},
|
||||
{TOKEN_STRING, "\"40\""},
|
||||
{TOKEN_KEYWORD_TO, "TO"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_INTEGER, "5"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_MOVE, "MOVE"},
|
||||
{TOKEN_INTEGER, "5"},
|
||||
{TOKEN_KEYWORD_TO, "TO"},
|
||||
{TOKEN_IDENT, "WS-SORT-MAX"},
|
||||
{TOKEN_COMMENT, "*> * Display original array"},
|
||||
{TOKEN_DISPLAY, "DISPLAY"},
|
||||
{TOKEN_STRING, "\"Original Array Contents:\""},
|
||||
{TOKEN_DISPLAY, "DISPLAY"},
|
||||
{TOKEN_STRING, "\"---------------------\""},
|
||||
{TOKEN_PERFORM, "PERFORM"},
|
||||
{TOKEN_VARYING, "VARYING"},
|
||||
{TOKEN_IDENT, "WS-INDEX"},
|
||||
{TOKEN_KEYWORD_FROM, "FROM"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_KEYWORD_BY, "BY"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_UNTIL, "UNTIL"},
|
||||
{TOKEN_IDENT, "WS-INDEX"},
|
||||
{TOKEN_GREATER_THAN, ">"},
|
||||
{TOKEN_IDENT, "WS-SORT-MAX"},
|
||||
{TOKEN_DISPLAY, "DISPLAY"},
|
||||
{TOKEN_STRING, "\"Element \""},
|
||||
{TOKEN_IDENT, "WS-INDEX"},
|
||||
{TOKEN_STRING, "\": \""},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_IDENT, "WS-INDEX"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_END_PERFORM, "END-PERFORM"},
|
||||
{TOKEN_DISPLAY, "DISPLAY"},
|
||||
{TOKEN_SPACE, "SPACE"},
|
||||
{TOKEN_COMMENT, "*> * Simplified bubble sort"},
|
||||
{TOKEN_PERFORM, "PERFORM"},
|
||||
{TOKEN_VARYING, "VARYING"},
|
||||
{TOKEN_IDENT, "WS-I"},
|
||||
{TOKEN_KEYWORD_FROM, "FROM"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_KEYWORD_BY, "BY"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_UNTIL, "UNTIL"},
|
||||
{TOKEN_IDENT, "WS-I"},
|
||||
{TOKEN_GREATER_THAN, ">"},
|
||||
{TOKEN_IDENT, "WS-SORT-MAX"},
|
||||
{TOKEN_SUB, "-"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_PERFORM, "PERFORM"},
|
||||
{TOKEN_VARYING, "VARYING"},
|
||||
{TOKEN_IDENT, "WS-J"},
|
||||
{TOKEN_KEYWORD_FROM, "FROM"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_KEYWORD_BY, "BY"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_UNTIL, "UNTIL"},
|
||||
{TOKEN_IDENT, "WS-J"},
|
||||
{TOKEN_GREATER_THAN, ">"},
|
||||
{TOKEN_IDENT, "WS-SORT-MAX"},
|
||||
{TOKEN_SUB, "-"},
|
||||
{TOKEN_IDENT, "WS-I"},
|
||||
{TOKEN_IF, "IF"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_IDENT, "WS-J"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_GREATER_THAN, ">"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_IDENT, "WS-J"},
|
||||
{TOKEN_ADD, "+"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_MOVE, "MOVE"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_IDENT, "WS-J"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_KEYWORD_TO, "TO"},
|
||||
{TOKEN_IDENT, "WS-TEMP-ROW"},
|
||||
{TOKEN_MOVE, "MOVE"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_IDENT, "WS-J"},
|
||||
{TOKEN_ADD, "+"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_KEYWORD_TO, "TO"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_IDENT, "WS-J"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_MOVE, "MOVE"},
|
||||
{TOKEN_IDENT, "WS-TEMP-ROW"},
|
||||
{TOKEN_KEYWORD_TO, "TO"},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_IDENT, "WS-J"},
|
||||
{TOKEN_ADD, "+"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_END_IF, "END-IF"},
|
||||
{TOKEN_END_PERFORM, "END-PERFORM"},
|
||||
{TOKEN_END_PERFORM, "END-PERFORM"},
|
||||
{TOKEN_COMMENT, "*> * Display sorted array"},
|
||||
{TOKEN_DISPLAY, "DISPLAY"},
|
||||
{TOKEN_STRING, "\"Sorted Array Contents:\""},
|
||||
{TOKEN_DISPLAY, "DISPLAY"},
|
||||
{TOKEN_STRING, "\"--------------------\""},
|
||||
{TOKEN_PERFORM, "PERFORM"},
|
||||
{TOKEN_VARYING, "VARYING"},
|
||||
{TOKEN_IDENT, "WS-INDEX"},
|
||||
{TOKEN_KEYWORD_FROM, "FROM"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_KEYWORD_BY, "BY"},
|
||||
{TOKEN_INTEGER, "1"},
|
||||
{TOKEN_UNTIL, "UNTIL"},
|
||||
{TOKEN_IDENT, "WS-INDEX"},
|
||||
{TOKEN_GREATER_THAN, ">"},
|
||||
{TOKEN_IDENT, "WS-SORT-MAX"},
|
||||
{TOKEN_DISPLAY, "DISPLAY"},
|
||||
{TOKEN_STRING, "\"Element \""},
|
||||
{TOKEN_IDENT, "WS-INDEX"},
|
||||
{TOKEN_STRING, "\": \""},
|
||||
{TOKEN_IDENT, "WS-SORT-ROW"},
|
||||
{TOKEN_LEFT_PARENTHESIS, "("},
|
||||
{TOKEN_IDENT, "WS-INDEX"},
|
||||
{TOKEN_RIGHT_PARENTHESIS, ")"},
|
||||
{TOKEN_END_PERFORM, "END-PERFORM"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_STOP, "STOP"},
|
||||
{TOKEN_RUN, "RUN"},
|
||||
{TOKEN_DOT, "."},
|
||||
{TOKEN_EOF, ""},
|
||||
};
|
||||
yyin = fopen("samples/sorting-snippet.cbl", "r");
|
||||
ASSERT_TRUE(yyin);
|
||||
int index = 0;
|
||||
token_t t;
|
||||
do {
|
||||
printf("index: %d token: %d text: %s\n", index, t, yytext);
|
||||
ASSERT_EQ(tokens[index].t, (t = yylex()));
|
||||
ASSERT_STREQ(tokens[index].p, yytext);
|
||||
++index;
|
||||
} while (t != TOKEN_EOF);
|
||||
}
|
||||
Loading…
Reference in New Issue