Changeset View
Changeset View
Standalone View
Standalone View
parser/test/lexertest.cpp
Show First 20 Lines • Show All 541 Lines • ▼ Show 20 Line(s) | 533 | { | |||
---|---|---|---|---|---|
542 | COMPARE_TOKEN(ts, 5, Parser::Token_ELLIPSIS, 1, 13, 1, 15); | 542 | COMPARE_TOKEN(ts, 5, Parser::Token_ELLIPSIS, 1, 13, 1, 15); | ||
543 | COMPARE_TOKEN(ts, 6, Parser::Token_VARIABLE, 1, 16, 1, 20); | 543 | COMPARE_TOKEN(ts, 6, Parser::Token_VARIABLE, 1, 16, 1, 20); | ||
544 | COMPARE_TOKEN(ts, 7, Parser::Token_RPAREN, 1, 21, 1, 21); | 544 | COMPARE_TOKEN(ts, 7, Parser::Token_RPAREN, 1, 21, 1, 21); | ||
545 | COMPARE_TOKEN(ts, 8, Parser::Token_WHITESPACE, 1, 22, 1, 22); | 545 | COMPARE_TOKEN(ts, 8, Parser::Token_WHITESPACE, 1, 22, 1, 22); | ||
546 | COMPARE_TOKEN(ts, 9, Parser::Token_LBRACE, 1, 23, 1, 23); | 546 | COMPARE_TOKEN(ts, 9, Parser::Token_LBRACE, 1, 23, 1, 23); | ||
547 | COMPARE_TOKEN(ts, 10, Parser::Token_RBRACE, 1, 24, 1, 24); | 547 | COMPARE_TOKEN(ts, 10, Parser::Token_RBRACE, 1, 24, 1, 24); | ||
548 | } | 548 | } | ||
549 | 549 | | |||
550 | void LexerTest::testSpaceship() | ||||
551 | { | ||||
552 | QScopedPointer<TokenStream> ts(tokenize(QStringLiteral("<?php\n$a = 'ab' <=> 'b';"), true)); | ||||
553 | QCOMPARE((int)ts->size(), 11); | ||||
554 | | ||||
555 | COMPARE_TOKEN(ts, 0, Parser::Token_OPEN_TAG, 0, 0, 0, 5); | ||||
556 | COMPARE_TOKEN(ts, 1, Parser::Token_VARIABLE, 1, 0, 1, 1); | ||||
557 | COMPARE_TOKEN(ts, 2, Parser::Token_WHITESPACE, 1, 2, 1, 2); | ||||
558 | COMPARE_TOKEN(ts, 3, Parser::Token_ASSIGN, 1, 3, 1, 3); | ||||
559 | COMPARE_TOKEN(ts, 4, Parser::Token_WHITESPACE, 1, 4, 1, 4); | ||||
560 | COMPARE_TOKEN(ts, 5, Parser::Token_CONSTANT_ENCAPSED_STRING, 1, 5, 1, 8); | ||||
561 | COMPARE_TOKEN(ts, 6, Parser::Token_WHITESPACE, 1, 9, 1, 9); | ||||
562 | COMPARE_TOKEN(ts, 7, Parser::Token_SPACESHIP, 1, 10, 1, 12); | ||||
563 | COMPARE_TOKEN(ts, 8, Parser::Token_WHITESPACE, 1, 13, 1, 13); | ||||
564 | COMPARE_TOKEN(ts, 9, Parser::Token_CONSTANT_ENCAPSED_STRING, 1, 14, 1, 16); | ||||
565 | COMPARE_TOKEN(ts, 10, Parser::Token_SEMICOLON, 1, 17, 1, 17); | ||||
566 | } | ||||
567 | | ||||
568 | void LexerTest::testNullCoalesce() | ||||
569 | { | ||||
570 | QScopedPointer<TokenStream> ts(tokenize(QStringLiteral("<?php\n$a = null ?? true;"), true)); | ||||
571 | QCOMPARE((int)ts->size(), 11); | ||||
572 | | ||||
573 | COMPARE_TOKEN(ts, 0, Parser::Token_OPEN_TAG, 0, 0, 0, 5); | ||||
574 | COMPARE_TOKEN(ts, 1, Parser::Token_VARIABLE, 1, 0, 1, 1); | ||||
575 | COMPARE_TOKEN(ts, 2, Parser::Token_WHITESPACE, 1, 2, 1, 2); | ||||
576 | COMPARE_TOKEN(ts, 3, Parser::Token_ASSIGN, 1, 3, 1, 3); | ||||
577 | COMPARE_TOKEN(ts, 4, Parser::Token_WHITESPACE, 1, 4, 1, 4); | ||||
578 | COMPARE_TOKEN(ts, 5, Parser::Token_STRING, 1, 5, 1, 8); | ||||
579 | COMPARE_TOKEN(ts, 6, Parser::Token_WHITESPACE, 1, 9, 1, 9); | ||||
580 | COMPARE_TOKEN(ts, 7, Parser::Token_NULL_COALESCE, 1, 10, 1, 11); | ||||
581 | COMPARE_TOKEN(ts, 8, Parser::Token_WHITESPACE, 1, 12, 1, 12); | ||||
582 | COMPARE_TOKEN(ts, 9, Parser::Token_STRING, 1, 13, 1, 16); | ||||
583 | COMPARE_TOKEN(ts, 10, Parser::Token_SEMICOLON, 1, 17, 1, 17); | ||||
584 | } | ||||
585 | | ||||
550 | TokenStream* LexerTest::tokenize(const QString& unit, bool debug, int initialState) | 586 | TokenStream* LexerTest::tokenize(const QString& unit, bool debug, int initialState) | ||
551 | { | 587 | { | ||
552 | TokenStream* tokenStream = new TokenStream; | 588 | TokenStream* tokenStream = new TokenStream; | ||
553 | Lexer lexer(tokenStream, unit, initialState); | 589 | Lexer lexer(tokenStream, unit, initialState); | ||
554 | int token; | 590 | int token; | ||
555 | int i = 0; | 591 | int i = 0; | ||
556 | QList<Parser::Token> tokens; | 592 | QList<Parser::Token> tokens; | ||
557 | while ((token = lexer.nextTokenKind())) { | 593 | while ((token = lexer.nextTokenKind())) { | ||
Show All 24 Lines |