/* * 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.read.recognizer.settings; import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; 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; @SuppressWarnings({ "PMD.MethodNamingConventions", "PMD.TooManyMethods" }) public class SuiteTeardownRecognizerTest { @ForClean private ATokenRecognizer rec; @Test public void test_suitePostconditionColonWord_allCombinations() throws IOException, URISyntaxException { // List<String> combinations = new CombinationGenerator() // .combinations("Suite Postcondition:"); Path p = Paths.get(this.getClass().getResource("Suite_Postcondition_LetterCombinations.txt").toURI()); List<String> combinations = Files.readAllLines(p, Charset.defaultCharset()); for (String comb : combinations) { StringBuilder textOfHeader = new StringBuilder(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_twoSpacesAndSuitePostconditionColonThanWord() { StringBuilder text = new StringBuilder(" Suite Postcondition:"); StringBuilder d = new StringBuilder(" ").append(text); assertThat(rec.hasNext(d, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(d.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_singleSpaceAndSuitePostconditionColonThanWord() { StringBuilder text = new StringBuilder(" Suite Postcondition:"); StringBuilder d = new StringBuilder(text).append("C"); assertThat(rec.hasNext(d, 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_singleSuitePostconditionColonThanLetterCWord() { StringBuilder text = new StringBuilder("Suite Postcondition:"); StringBuilder d = new StringBuilder(text).append("C"); assertThat(rec.hasNext(d, 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_singleSuitePostconditionColonWord() { StringBuilder text = new StringBuilder("Suite Postcondition:"); 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_suitePostconditionWord_allCombinations() throws IOException, URISyntaxException { // List<String> combinations = new CombinationGenerator() // .combinations("Suite Postcondition"); Path p = Paths.get(this.getClass().getResource("Suite_Postcondition_LetterCombinations.txt").toURI()); List<String> combinations = Files.readAllLines(p, Charset.defaultCharset()); for (String comb : combinations) { StringBuilder textOfHeader = new StringBuilder(comb); 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_twoSpacesAndSuitePostconditionThanWord() { StringBuilder text = new StringBuilder(" Suite Postcondition"); StringBuilder d = new StringBuilder(" ").append(text); assertThat(rec.hasNext(d, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(d.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_singleSpaceAndSuitePostconditionThanWord() { StringBuilder text = new StringBuilder(" Suite Postcondition"); StringBuilder d = new StringBuilder(text).append("C"); assertThat(rec.hasNext(d, 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_singleSuitePostconditionThanLetterCWord() { StringBuilder text = new StringBuilder("Suite Postcondition"); StringBuilder d = new StringBuilder(text).append("C"); assertThat(rec.hasNext(d, 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_singleSuitePostconditionWord() { StringBuilder text = new StringBuilder("Suite Postcondition"); 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_suiteSetupColonWord_allCombinations() { List<String> combinations = new CombinationGenerator().combinations("Suite Teardown:"); for (String comb : combinations) { StringBuilder textOfHeader = new StringBuilder(comb); 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_twoSpacesAndSuiteTeardownColonThanWord() { StringBuilder text = new StringBuilder(" Suite Teardown:"); StringBuilder d = new StringBuilder(" ").append(text); assertThat(rec.hasNext(d, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(d.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_singleSpaceAndSuiteTeardownColonThanWord() { StringBuilder text = new StringBuilder(" Suite Teardown:"); StringBuilder d = new StringBuilder(text).append("C"); assertThat(rec.hasNext(d, 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_singleSuiteTeardownColonThanLetterCWord() { StringBuilder text = new StringBuilder("Suite Teardown:"); StringBuilder d = new StringBuilder(text).append("C"); assertThat(rec.hasNext(d, 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_singleSuiteTeardownColonWord() { StringBuilder text = new StringBuilder("Suite Teardown:"); 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_suiteTeardownWord_allCombinations() { List<String> combinations = new CombinationGenerator().combinations("Suite Teardown"); for (String comb : combinations) { StringBuilder textOfHeader = new StringBuilder(comb); 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_twoSpacesAndSuiteTeardownThanWord() { StringBuilder text = new StringBuilder(" Suite Teardown"); StringBuilder d = new StringBuilder(" ").append(text); assertThat(rec.hasNext(d, 1, 0)).isTrue(); RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(1); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(d.length()); assertThat(token.getText().toString()).isEqualTo(text.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_singleSpaceAndSuiteTeardownThanWord() { StringBuilder text = new StringBuilder(" Suite Teardown"); StringBuilder d = new StringBuilder(text).append("C"); assertThat(rec.hasNext(d, 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_singleSuiteTeardownThanLetterCWord() { StringBuilder text = new StringBuilder("Suite Teardown"); StringBuilder d = new StringBuilder(text).append("C"); assertThat(rec.hasNext(d, 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_singleSuiteTeardownWord() { StringBuilder text = new StringBuilder("Suite Teardown"); 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("[ ]?((" + ATokenRecognizer.createUpperLowerCaseWord("Suite") + "[\\s]+" + ATokenRecognizer.createUpperLowerCaseWord("Teardown") + "[\\s]*:" + "|" + ATokenRecognizer.createUpperLowerCaseWord("Suite") + "[\\s]+" + ATokenRecognizer.createUpperLowerCaseWord("Teardown") + ")|(" + ATokenRecognizer.createUpperLowerCaseWord("Suite") + "[\\s]+" + ATokenRecognizer.createUpperLowerCaseWord("Postcondition") + "[\\s]*:" + "|" + ATokenRecognizer.createUpperLowerCaseWord("Suite") + "[\\s]+" + ATokenRecognizer.createUpperLowerCaseWord("Postcondition") + "))"); } @Test public void test_getProducedType() { assertThat(rec.getProducedType()).isEqualTo(RobotTokenType.SETTING_SUITE_TEARDOWN_DECLARATION); } @Before public void setUp() { rec = new SuiteTeardownRecognizer(); } @After public void tearDown() throws Exception { ClassFieldCleaner.init(this); } }