⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lexertest.java

📁 不管是测试驱动开发或者是其它的开发模式
💻 JAVA
字号:
/*  Copyright (c) 2000-2004 jMock.org
 */
package test.jmock.examples.calculator;

import junit.framework.TestCase;
import org.jmock.examples.calculator.Lexer;
import org.jmock.examples.calculator.Token;


public class LexerTest
        extends TestCase
{
    public void testHasAStackOfPushBackTokens() throws Exception {
        Lexer lexer = new Lexer("");
        lexer.pushBack(new Token(1, "1"));
        lexer.pushBack(new Token(2, "2"));

        assertNextToken(lexer, 2, "2");
        assertNextToken(lexer, 1, "1");
        assertNextToken(lexer, Token.END, null);
    }

    public void testTokenisesLiteralIntegerValues() throws Exception {
        String input = "23";
        Lexer lexer = new Lexer(input);

        assertNextToken(lexer, Token.NUMBER, "23");
        assertNextToken(lexer, Token.END, null);
    }

    public void testTokenisesLiteralRealValues() throws Exception {
        String input = "123.45";
        Lexer lexer = new Lexer(input);

        assertNextToken(lexer, Token.NUMBER, "123.45");
        assertNextToken(lexer, Token.END, null);
    }

    public void testTokenisesAddOperator() throws Exception {
        Lexer lexer = new Lexer("1+2");

        assertNextToken(lexer, Token.NUMBER, "1");
        assertNextToken(lexer, Token.ADD, "+");
        assertNextToken(lexer, Token.NUMBER, "2");
        assertNextToken(lexer, Token.END, null);
    }

    public void testTokenisesSubtractOperator() throws Exception {
        Lexer lexer = new Lexer("1-2");

        assertNextToken(lexer, Token.NUMBER, "1");
        assertNextToken(lexer, Token.SUBTRACT, "-");
        assertNextToken(lexer, Token.NUMBER, "2");
        assertNextToken(lexer, Token.END, null);
    }

    public void testTokenisesMultiplyOperator() throws Exception {
        Lexer lexer = new Lexer("1*2");

        assertNextToken(lexer, Token.NUMBER, "1");
        assertNextToken(lexer, Token.MULTIPLY, "*");
        assertNextToken(lexer, Token.NUMBER, "2");
        assertNextToken(lexer, Token.END, null);
    }

    public void testTokenisesDivideOperator() throws Exception {
        Lexer lexer = new Lexer("1/2");

        assertNextToken(lexer, Token.NUMBER, "1");
        assertNextToken(lexer, Token.DIVIDE, "/");
        assertNextToken(lexer, Token.NUMBER, "2");
        assertNextToken(lexer, Token.END, null);
    }

    public void testTokenisesPowerOperator() throws Exception {
        Lexer lexer = new Lexer("1^2");

        assertNextToken(lexer, Token.NUMBER, "1");
        assertNextToken(lexer, Token.POWER, "^");
        assertNextToken(lexer, Token.NUMBER, "2");
        assertNextToken(lexer, Token.END, null);
    }

    public void testTokenisesIdentifiers() throws Exception {
        Lexer lexer = new Lexer("identifier anotherIdentifier-identifier3");

        assertNextToken(lexer, Token.IDENTIFIER, "identifier");
        assertNextToken(lexer, Token.IDENTIFIER, "anotherIdentifier");
        assertNextToken(lexer, Token.SUBTRACT, "-");
        assertNextToken(lexer, Token.IDENTIFIER, "identifier3");
        assertNextToken(lexer, Token.END, null);
    }

    public void testSkipsWhitespaceBetweenTokens() throws Exception {
        String input = " 2 \t\n\r + 3";
        Lexer lexer = new Lexer(input);

        assertNextToken(lexer, Token.NUMBER, "2");
        assertNextToken(lexer, Token.ADD, "+");
        assertNextToken(lexer, Token.NUMBER, "3");
        assertNextToken(lexer, Token.END, null);
    }

    public void testTokenisesParentheses() throws Exception {
        Lexer lexer = new Lexer("(x+y)*z");

        assertNextToken(lexer, Token.PAREN_OPEN, "(");
        assertNextToken(lexer, Token.IDENTIFIER, "x");
        assertNextToken(lexer, Token.ADD, "+");
        assertNextToken(lexer, Token.IDENTIFIER, "y");
        assertNextToken(lexer, Token.PAREN_CLOSE, ")");
        assertNextToken(lexer, Token.MULTIPLY, "*");
        assertNextToken(lexer, Token.IDENTIFIER, "z");
        assertNextToken(lexer, Token.END, null);
    }

    private void assertNextToken( Lexer lexer, int tokenType, String tokenValue )
            throws Exception {
        Token token = lexer.nextToken();

        assertEquals("token type", tokenType, token.getType());
        assertEquals("token value", tokenValue, token.getValue());
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -