/* * 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); } }