1 /* 2 * Copyright (C) 2007-2010 Júlio Vilmar Gesser. 3 * Copyright (C) 2011, 2013-2016 The JavaParser Team. 4 * 5 * This file is part of JavaParser. 6 * 7 * JavaParser can be used either under the terms of 8 * a) the GNU Lesser General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * b) the terms of the Apache License 12 * 13 * You should have received a copy of both licenses in LICENCE.LGPL and 14 * LICENCE.APACHE. Please refer to those files for details. 15 * 16 * JavaParser is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU Lesser General Public License for more details. 20 */ 21 22 package com.github.javaparser; 23 24 import com.github.javaparser.ast.expr.Expression; 25 import org.junit.Test; 26 27 import java.util.Iterator; 28 29 import static com.github.javaparser.GeneratedJavaParserConstants.*; 30 import static com.github.javaparser.JavaToken.Category.*; 31 import static com.github.javaparser.Providers.provider; 32 import static com.github.javaparser.Range.range; 33 import static org.junit.Assert.assertEquals; 34 import static org.junit.Assert.assertTrue; 35 36 public class JavaTokenTest { 37 38 @Test testAFewTokens()39 public void testAFewTokens() { 40 ParseResult<Expression> result = new JavaParser().parse(ParseStart.EXPRESSION, provider("1 +/*2*/1 ")); 41 Iterator<JavaToken> iterator = result.getResult().get().getTokenRange().get().iterator(); 42 assertToken("1", range(1, 1, 1, 1), INTEGER_LITERAL, LITERAL, iterator.next()); 43 assertToken(" ", range(1, 2, 1, 2), SPACE, WHITESPACE_NO_EOL, iterator.next()); 44 assertToken("+", range(1, 3, 1, 3), PLUS, OPERATOR, iterator.next()); 45 assertToken("/*2*/", range(1, 4, 1, 8), MULTI_LINE_COMMENT, COMMENT, iterator.next()); 46 assertToken("1", range(1, 9, 1, 9), INTEGER_LITERAL, LITERAL, iterator.next()); 47 assertToken(" ", range(1, 10, 1, 10), SPACE, WHITESPACE_NO_EOL, iterator.next()); 48 assertToken("", range(1, 10, 1, 10), EOF, WHITESPACE_NO_EOL, iterator.next()); 49 assertEquals(false, iterator.hasNext()); 50 } 51 assertToken(String image, Range range, int kind, JavaToken.Category category, JavaToken token)52 private void assertToken(String image, Range range, int kind, JavaToken.Category category, JavaToken token) { 53 assertEquals(image, token.getText()); 54 assertEquals(range, token.getRange().get()); 55 assertEquals(kind, token.getKind()); 56 assertEquals(category, token.getCategory()); 57 token.getNextToken().ifPresent(nt -> assertEquals(token, nt.getPreviousToken().get())); 58 token.getPreviousToken().ifPresent(pt -> assertEquals(token, pt.getNextToken().get())); 59 assertTrue(token.getNextToken().isPresent() || token.getPreviousToken().isPresent()); 60 } 61 62 @Test testAFewImagesForTokenKinds()63 public void testAFewImagesForTokenKinds() { 64 assertEquals("=", new JavaToken(ASSIGN).getText()); 65 // TODO this shouldn't be a space. 66 assertEquals(" ", new JavaToken(EOF).getText()); 67 assertEquals("*/", new JavaToken(JAVADOC_COMMENT).getText()); 68 } 69 70 @Test testKindEnum()71 public void testKindEnum() { 72 JavaToken.Kind kind = JavaToken.Kind.valueOf(GeneratedJavaParserConstants.ASSERT); 73 74 assertEquals(JavaToken.Kind.ASSERT, kind); 75 assertEquals(GeneratedJavaParserConstants.ASSERT, kind.getKind()); 76 } 77 } 78