/* * Copyright 2015 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.rf.ide.core.testdata.text.reader.recognizer.header; import static org.assertj.core.api.Assertions.assertThat; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.rf.ide.core.test.helpers.ClassFieldCleaner; import org.rf.ide.core.test.helpers.ClassFieldCleaner.ForClean; import org.rf.ide.core.test.helpers.CombinationGenerator; import org.rf.ide.core.testdata.text.read.recognizer.ATokenRecognizer; import org.rf.ide.core.testdata.text.read.recognizer.RobotToken; import org.rf.ide.core.testdata.text.read.recognizer.RobotTokenType; import org.rf.ide.core.testdata.text.read.recognizer.header.KeywordsTableHeaderRecognizer; @SuppressWarnings({ "PMD.MethodNamingConventions", "PMD.TooManyMethods" }) public class KeywordsTableHeaderRecognizerTest { @ForClean private ATokenRecognizer rec; @Test public void test_check_UserKeywordsAllPossibilities_withAsterisks_atTheBeginAndEnd() { assertAllCombinations("User Keywords"); } @Test public void test_check_UserKeywordAllPossibilities_withAsterisks_atTheBeginAndEnd() { assertAllCombinations("User Keyword"); } @Test public void test_check_KeywordsAllPossibilities_withAsterisks_atTheBeginAndEnd() { assertAllCombinations("Keywords"); } @Test public void test_check_KeywordAllPossibilities_withAsterisks_atTheBeginAndEnd() { assertAllCombinations("Keyword"); } private void assertAllCombinations(String text) { List<String> combinations = new CombinationGenerator().combinations(text); for (String comb : combinations) { StringBuilder textOfHeader = new StringBuilder("*** ").append(comb).append(" ***"); assertThat(rec.hasNext(textOfHeader, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(textOfHeader.length()); assertThat(token.getText().toString()).isEqualTo(textOfHeader.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } } @Test public void test_check_UserKeyword_withAsterisk_atTheBeginAndEnd_spaceLetterT() { String expectedToCut = " * User Keyword *"; StringBuilder text = new StringBuilder(expectedToCut).append(" T"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(expectedToCut.length()); assertThat(token.getText().toString()).isEqualTo(expectedToCut); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceLetterT_and_UserKeyword_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("T * User Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(" * User Keyword ***"); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceUserKeyword_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder(" * User Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_UserKeyword_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("* User Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_UserKeyword_withAsterisks_atTheBeginAndEnd_spaceLetterT() { String expectedToCut = " *** User Keyword ***"; StringBuilder text = new StringBuilder(expectedToCut).append(" T"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(expectedToCut.length()); assertThat(token.getText().toString()).isEqualTo(expectedToCut); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceLetterT_and_UserKeyword_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("T *** User Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(" *** User Keyword ***"); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceUserKeyword_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder(" *** User Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_UserKeyword_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("*** User Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_UserKeywords_withAsterisk_atTheBeginAndEnd_spaceLetterT() { String expectedToCut = " * User Keywords *"; StringBuilder text = new StringBuilder(expectedToCut).append(" T"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(expectedToCut.length()); assertThat(token.getText().toString()).isEqualTo(expectedToCut); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceLetterT_and_UserKeywords_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("T * User Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(" * User Keywords ***"); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceUserKeywords_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder(" * User Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_UserKeywords_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("* User Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_UserKeywords_withAsterisks_atTheBeginAndEnd_spaceLetterT() { String expectedToCut = " *** User Keywords ***"; StringBuilder text = new StringBuilder(expectedToCut).append(" T"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(expectedToCut.length()); assertThat(token.getText().toString()).isEqualTo(expectedToCut); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceLetterT_and_UserKeywords_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("T *** User Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(" *** User Keywords ***"); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceUserKeywords_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder(" *** User Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_UserKeywords_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("*** User Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_Keywords_withAsterisk_atTheBeginAndEnd_spaceLetterT() { String expectedToCut = " * Keywords *"; StringBuilder text = new StringBuilder(expectedToCut).append(" T"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(expectedToCut.length()); assertThat(token.getText().toString()).isEqualTo(expectedToCut); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceLetterT_and_Keywords_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("T * Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(" * Keywords ***"); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceKeywords_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder(" * Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_Keywords_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("* Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_Keywords_withAsterisks_atTheBeginAndEnd_spaceLetterT() { String expectedToCut = " *** Keywords ***"; StringBuilder text = new StringBuilder(expectedToCut).append(" T"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(expectedToCut.length()); assertThat(token.getText().toString()).isEqualTo(expectedToCut); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceLetterT_and_Keywords_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("T *** Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(" *** Keywords ***"); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceKeywords_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder(" *** Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_Keywords_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("*** Keywords ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_Keyword_withAsterisk_atTheBeginAndEnd_spaceLetterT() { String expectedToCut = " * Keyword *"; StringBuilder text = new StringBuilder(expectedToCut).append(" T"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(expectedToCut.length()); assertThat(token.getText().toString()).isEqualTo(expectedToCut); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceLetterT_and_Keyword_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("T * Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(" * Keyword ***"); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceKeyword_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder(" * Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_Keyword_withAsterisk_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("* Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_Keyword_withAsterisks_atTheBeginAndEnd_spaceLetterT() { String expectedToCut = " *** Keyword ***"; StringBuilder text = new StringBuilder(expectedToCut).append(" T"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(expectedToCut.length()); assertThat(token.getText().toString()).isEqualTo(expectedToCut); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceLetterT_and_Keyword_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("T *** Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(" *** Keyword ***"); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_spaceKeyword_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder(" *** Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_check_Keyword_withAsterisks_atTheBeginAndEnd() { StringBuilder text = new StringBuilder("*** Keyword ***"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(text.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_getPattern() { assertThat(rec.getPattern().pattern()) .isEqualTo("[ ]?([*][\\s]*)+[\\s]*(" + ATokenRecognizer.createUpperLowerCaseWordWithSpacesInside("User") + "[\\s]+)?(" + ATokenRecognizer.createUpperLowerCaseWordWithSpacesInside("Keywords") + "|" + ATokenRecognizer.createUpperLowerCaseWordWithSpacesInside("Keyword") + ")([\\s]*[*])*"); } @Test public void test_getProducedType() { assertThat(rec.getProducedType()).isEqualTo(RobotTokenType.KEYWORDS_TABLE_HEADER); } @Before public void setUp() { rec = new KeywordsTableHeaderRecognizer(); } @After public void tearDown() throws Exception { ClassFieldCleaner.init(this); } }