/* * 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.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") public class LibraryAliasRecognizerTest { @ForClean private ATokenRecognizer rec; @Test public void test_withNameWords_allCombinations() { final List<String> combinations = new CombinationGenerator().combinations("with name"); for (final String comb : combinations) { final StringBuilder textOfHeader = new StringBuilder(comb); assertThat(rec.hasNext(textOfHeader, 1, 0)).isTrue(); final 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_twoSpacesAnd_WITH_NAME_ThanWord() { final StringBuilder text = new StringBuilder(" WITH NAME"); final StringBuilder d = new StringBuilder(" ").append(text); assertThat(rec.hasNext(d, 1, 0)).isTrue(); final RobotToken token = rec.next(); assertThat(token.getStartColumn()).isEqualTo(0); assertThat(token.getLineNumber()).isEqualTo(1); assertThat(token.getEndColumn()).isEqualTo(d.length()); assertThat(token.getText().toString()).isEqualTo(d.toString()); assertThat(token.getTypes()).containsExactly(rec.getProducedType()); } @Test public void test_singleSpaceAndWITH_NAME() { final StringBuilder text = new StringBuilder(" WITH NAME"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); final 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_singleAliasThanLetterCWord() { final StringBuilder text = new StringBuilder("WITH NAMEC"); assertThat(rec.hasNext(text, 1, 0)).isFalse(); } @Test public void test_singleAliasWord() { final StringBuilder text = new StringBuilder("WITH NAME"); assertThat(rec.hasNext(text, 1, 0)).isTrue(); final 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)*" + ATokenRecognizer.createUpperLowerCaseWord("WITH") + "[\\s]+" + ATokenRecognizer.createUpperLowerCaseWord("NAME") + "(\\s)*$"); } @Test public void test_getProducedType() { assertThat(rec.getProducedType()).isEqualTo(RobotTokenType.SETTING_LIBRARY_ALIAS); } @Before public void setUp() { rec = new LibraryAliasRecognizer(); } @After public void tearDown() throws Exception { ClassFieldCleaner.init(this); } }