| /******************************************************************************* |
| * Copyright (c) 2020 Christian Pontesegger and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v2.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Christian Pontesegger - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.ease.helpgenerator.documentation; |
| |
| import static org.junit.jupiter.api.Assertions.assertEquals; |
| import static org.junit.jupiter.api.Assertions.assertFalse; |
| import static org.junit.jupiter.api.Assertions.assertNull; |
| import static org.junit.jupiter.api.Assertions.assertThrows; |
| import static org.junit.jupiter.api.Assertions.assertTrue; |
| |
| import java.io.IOException; |
| |
| import org.junit.jupiter.api.DisplayName; |
| import org.junit.jupiter.api.Test; |
| |
| public class ReferenceTokenizerTest { |
| |
| @Test |
| @DisplayName("getSimpleClassName('java.lang.String') returns last part of FQN") |
| public void getSimpleClassNameReturnsLastPartOfFQN() { |
| assertEquals("String", ReferenceTokenizer.getSimpleClassName("java.lang.String")); |
| } |
| |
| @Test |
| @DisplayName("getSimpleClassName('String') returns simple name") |
| public void getSimpleClassNameReturnsSimpleString() { |
| assertEquals("String", ReferenceTokenizer.getSimpleClassName("String")); |
| } |
| |
| @Test |
| @DisplayName("getPackageName('java.lang.String') returns 'java.lang'") |
| public void getPackageNameReturnsPackage() { |
| assertEquals("java.lang", ReferenceTokenizer.getPackageName("java.lang.String")); |
| } |
| |
| @Test |
| @DisplayName("getPackageName('String') returns empty string") |
| public void getPackageNameReturnsEmptyString() { |
| assertEquals("", ReferenceTokenizer.getPackageName("String")); |
| } |
| |
| @Test |
| @DisplayName("getPackageName('String') + getSimpleClassName() return FQN") |
| public void getPackageNameAndGetSimpleNameConBeCombined() { |
| assertEquals("java.lang.String", |
| ReferenceTokenizer.getPackageName("java.lang.String") + "." + ReferenceTokenizer.getSimpleClassName("java.lang.String")); |
| } |
| |
| @Test |
| @DisplayName("tokenize throws on invalid reference") |
| public void tokenizeInvalidReference() { |
| assertThrows(IOException.class, () -> new ReferenceTokenizer("{@dead}")); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@link java.io.File}'") |
| public void tokenizeClassLink() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@link java.io.File}"); |
| |
| assertTrue(tokenizer.isLink()); |
| assertEquals("java.io.File", tokenizer.getQualifiedName()); |
| assertNull(tokenizer.getMethod()); |
| assertNull(tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertFalse(tokenizer.isMethod()); |
| assertFalse(tokenizer.isField()); |
| assertTrue(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@link java.io.File#pathSeparator}'") |
| public void tokenizeClassField() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@link java.io.File#pathSeparator}"); |
| |
| assertTrue(tokenizer.isLink()); |
| assertEquals("java.io.File", tokenizer.getQualifiedName()); |
| assertEquals("pathSeparator", tokenizer.getMethod()); |
| assertNull(tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertFalse(tokenizer.isMethod()); |
| assertTrue(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@link java.lang.String#getBytes()}'") |
| public void tokenizeClassMethodWithoutParameters() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@link java.lang.String#getBytes()}"); |
| |
| assertTrue(tokenizer.isLink()); |
| assertEquals("java.lang.String", tokenizer.getQualifiedName()); |
| assertEquals("getBytes", tokenizer.getMethod()); |
| assertEquals("", tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertTrue(tokenizer.isMethod()); |
| assertFalse(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@link #getBytes()}'") |
| public void tokenizeLocalClassMethod() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@link #getBytes()}"); |
| |
| assertTrue(tokenizer.isLink()); |
| assertEquals("", tokenizer.getQualifiedName()); |
| assertEquals("getBytes", tokenizer.getMethod()); |
| assertEquals("", tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertTrue(tokenizer.isMethod()); |
| assertFalse(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@link #pathSeparator}'") |
| public void tokenizeLocalClassField() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@link #pathSeparator}"); |
| |
| assertTrue(tokenizer.isLink()); |
| assertEquals("", tokenizer.getQualifiedName()); |
| assertEquals("pathSeparator", tokenizer.getMethod()); |
| assertNull(tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertFalse(tokenizer.isMethod()); |
| assertTrue(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@link java.lang.String#copyValueOf(char[], int, int)}'") |
| public void tokenizeClassMethodWithParameters() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@link java.lang.String#copyValueOf(char[], int, int)}"); |
| |
| assertTrue(tokenizer.isLink()); |
| assertEquals("java.lang.String", tokenizer.getQualifiedName()); |
| assertEquals("copyValueOf", tokenizer.getMethod()); |
| assertEquals("char[], int, int", tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertTrue(tokenizer.isMethod()); |
| assertFalse(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@link java.lang.String#String(byte[])}'") |
| public void tokenizeClassConstructor() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@link java.lang.String#String(byte[])}"); |
| |
| assertTrue(tokenizer.isLink()); |
| assertEquals("java.lang.String", tokenizer.getQualifiedName()); |
| assertEquals("String", tokenizer.getMethod()); |
| assertEquals("byte[]", tokenizer.getParameters()); |
| |
| assertTrue(tokenizer.isConstructor()); |
| assertFalse(tokenizer.isMethod()); |
| assertFalse(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@module #methodName()}'") |
| public void tokenizeLocalModuleMethod() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@module #methodName()}"); |
| |
| assertTrue(tokenizer.isModule()); |
| assertEquals("", tokenizer.getQualifiedName()); |
| assertEquals("methodName", tokenizer.getMethod()); |
| assertEquals("", tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertTrue(tokenizer.isMethod()); |
| assertFalse(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@module #fieldName}'") |
| public void tokenizeModuleConstant() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@module #fieldName}"); |
| |
| assertTrue(tokenizer.isModule()); |
| assertEquals("", tokenizer.getQualifiedName()); |
| assertEquals("fieldName", tokenizer.getMethod()); |
| assertNull(tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertFalse(tokenizer.isMethod()); |
| assertTrue(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@module module.id.of.target.module#methodName()}'") |
| public void tokenizeExternalModuleMethod() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@module module.id.of.target.module#methodName()}"); |
| |
| assertTrue(tokenizer.isModule()); |
| assertEquals("module.id.of.target.module", tokenizer.getQualifiedName()); |
| assertEquals("methodName", tokenizer.getMethod()); |
| assertEquals("", tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertTrue(tokenizer.isMethod()); |
| assertFalse(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@module module.id.of.target.module}'") |
| public void tokenizeExternalModule() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@module module.id.of.target.module}"); |
| |
| assertTrue(tokenizer.isModule()); |
| assertEquals("module.id.of.target.module", tokenizer.getQualifiedName()); |
| assertNull(tokenizer.getMethod()); |
| assertNull(tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertFalse(tokenizer.isMethod()); |
| assertFalse(tokenizer.isField()); |
| assertTrue(tokenizer.isClass()); |
| } |
| |
| @Test |
| @DisplayName("tokenize '{@link String#getBytes()}'") |
| public void tokenizeSimpleClassName() throws IOException { |
| final ReferenceTokenizer tokenizer = new ReferenceTokenizer("{@link String#getBytes()}", name -> "java.lang." + name); |
| |
| assertTrue(tokenizer.isLink()); |
| assertEquals("java.lang.String", tokenizer.getQualifiedName()); |
| assertEquals("getBytes", tokenizer.getMethod()); |
| assertEquals("", tokenizer.getParameters()); |
| |
| assertFalse(tokenizer.isConstructor()); |
| assertTrue(tokenizer.isMethod()); |
| assertFalse(tokenizer.isField()); |
| assertFalse(tokenizer.isClass()); |
| } |
| } |