/*
* 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 TestTeardownRecognizerTest {
@ForClean
private ATokenRecognizer rec;
@Test
public void test_testPostconditionColonWord_allCombinations() throws IOException, URISyntaxException {
// List<String> combinations = new CombinationGenerator()
// .combinations("Test Postcondition:");
Path p = Paths.get(this.getClass().getResource("Test_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_twoSpacesAndTestPostconditionColonThanWord() {
StringBuilder text = new StringBuilder(" Test 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_singleSpaceAndTestPostconditionColonThanWord() {
StringBuilder text = new StringBuilder(" Test 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_singleTestPostconditionColonThanLetterCWord() {
StringBuilder text = new StringBuilder("Test 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_singleTestPostconditionColonWord() {
StringBuilder text = new StringBuilder("Test 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_testPostconditionWord_allCombinations() throws IOException, URISyntaxException {
// List<String> combinations = new CombinationGenerator()
// .combinations("Test Postcondition");
Path p = Paths.get(this.getClass().getResource("Test_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_twoSpacesAndTestPostconditionThanWord() {
StringBuilder text = new StringBuilder(" Test 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_singleSpaceAndTestPostconditionThanWord() {
StringBuilder text = new StringBuilder(" Test 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_singleTestPostconditionThanLetterCWord() {
StringBuilder text = new StringBuilder("Test 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_singleTestPostconditionWord() {
StringBuilder text = new StringBuilder("Test 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_testSetupColonWord_allCombinations() {
List<String> combinations = new CombinationGenerator().combinations("Test 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_twoSpacesAndTestTeardownColonThanWord() {
StringBuilder text = new StringBuilder(" Test 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_singleSpaceAndTestTeardownColonThanWord() {
StringBuilder text = new StringBuilder(" Test 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_singleTestTeardownColonThanLetterCWord() {
StringBuilder text = new StringBuilder("Test 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_singleTestTeardownColonWord() {
StringBuilder text = new StringBuilder("Test 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_testTeardownWord_allCombinations() {
List<String> combinations = new CombinationGenerator().combinations("Test 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_twoSpacesAndTestTeardownThanWord() {
StringBuilder text = new StringBuilder(" Test 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_singleSpaceAndTestTeardownThanWord() {
StringBuilder text = new StringBuilder(" Test 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_singleTestTeardownThanLetterCWord() {
StringBuilder text = new StringBuilder("Test 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_singleTestTeardownWord() {
StringBuilder text = new StringBuilder("Test 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("Test")
+ "[\\s]+" + ATokenRecognizer.createUpperLowerCaseWord("Teardown") + "[\\s]*:" + "|"
+ ATokenRecognizer.createUpperLowerCaseWord("Test") + "[\\s]+"
+ ATokenRecognizer.createUpperLowerCaseWord("Teardown") + ")|("
+ ATokenRecognizer.createUpperLowerCaseWord("Test") + "[\\s]+"
+ ATokenRecognizer.createUpperLowerCaseWord("Postcondition") + "[\\s]*:" + "|"
+ ATokenRecognizer.createUpperLowerCaseWord("Test") + "[\\s]+"
+ ATokenRecognizer.createUpperLowerCaseWord("Postcondition") + "))");
}
@Test
public void test_getProducedType() {
assertThat(rec.getProducedType()).isEqualTo(RobotTokenType.SETTING_TEST_TEARDOWN_DECLARATION);
}
@Before
public void setUp() {
rec = new TestTeardownRecognizer();
}
@After
public void tearDown() throws Exception {
ClassFieldCleaner.init(this);
}
}