/* * 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 MetadataRecognizerTest { @ForClean private ATokenRecognizer rec; @Test public void test_metadataColonWord_allCombinations() { List<String> combinations = new CombinationGenerator().combinations("Metadata:"); 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_twoSpacesAndMetadataColonThanWord() { StringBuilder text = new StringBuilder(" Metadata:"); 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_singleSpaceAndMetadataColonThanWord() { StringBuilder text = new StringBuilder(" Metadata:"); 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_singleMetadataColonThanLetterCWord() { StringBuilder text = new StringBuilder("Metadata:"); 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_singleMetadataColonWord() { StringBuilder text = new StringBuilder("Metadata:"); 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_metadataWord_allCombinations() { List<String> combinations = new CombinationGenerator().combinations("Metadata"); 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_twoSpacesAndMetadataThanWord() { StringBuilder text = new StringBuilder(" Metadata"); 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_singleSpaceAndMetadataThanWord() { StringBuilder text = new StringBuilder(" Metadata"); 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_singleMetadataThanLetterCWord() { StringBuilder text = new StringBuilder("Metadata"); 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_singleMetadataWord() { StringBuilder text = new StringBuilder("Metadata"); 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("Metadata") + "[\\s]*:" + "|" + ATokenRecognizer.createUpperLowerCaseWord("Metadata") + ")|(" + ATokenRecognizer.createUpperLowerCaseWord("Meta") + "[\\s]*:" + "|" + ATokenRecognizer.createUpperLowerCaseWord("Meta") + ")"); } @Test public void test_getProducedType() { assertThat(rec.getProducedType()).isEqualTo(RobotTokenType.SETTING_METADATA_DECLARATION); } @Before public void setUp() { rec = new MetadataRecognizer(); } @After public void tearDown() throws Exception { ClassFieldCleaner.init(this); } }