/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.rf.ide.core.testdata.model.table.keywords; import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import org.rf.ide.core.testdata.model.AModelElement; import org.rf.ide.core.testdata.model.RobotFileOutput; import org.rf.ide.core.testdata.model.RobotVersion; import org.rf.ide.core.testdata.model.table.RobotExecutableRow; import org.rf.ide.core.testdata.model.table.keywords.KeywordArguments; import org.rf.ide.core.testdata.model.table.keywords.KeywordDocumentation; import org.rf.ide.core.testdata.model.table.keywords.KeywordReturn; import org.rf.ide.core.testdata.model.table.keywords.KeywordTags; import org.rf.ide.core.testdata.model.table.keywords.KeywordTeardown; import org.rf.ide.core.testdata.model.table.keywords.KeywordTimeout; import org.rf.ide.core.testdata.model.table.keywords.KeywordUnknownSettings; import org.rf.ide.core.testdata.model.table.keywords.UserKeyword; import org.rf.ide.core.testdata.text.read.recognizer.RobotToken; /** * @author wypych */ public class UserKeywordRemoveSettingsTest { private UserKeyword keyword; @Before public void setUp() { final RobotFileOutput out = new RobotFileOutput(RobotVersion.from("2.9.0")); out.getFileModel().includeKeywordTableSection(); keyword = new UserKeyword(new RobotToken()); out.getFileModel().getKeywordTable().addKeyword(keyword); addOthersToDoNotRemove(keyword); } @Test public void forDocumentation_whichExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordDocumentation doc = keyword.newDocumentation(); // execute final boolean state = keyword.removeUnitSettings(doc); // verify assertThat(state).isTrue(); assertThat(keyword.getDocumentation()).doesNotContain(doc); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forDocumentation_whichNotExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordDocumentation doc = new KeywordDocumentation(new RobotToken()); // execute final boolean state = keyword.removeUnitSettings(doc); // verify assertThat(state).isFalse(); assertThat(keyword.getDocumentation()).doesNotContain(doc); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forTags_whichExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordTags tags = keyword.newTags(); // execute final boolean state = keyword.removeUnitSettings(tags); // verify assertThat(state).isTrue(); assertThat(keyword.getTags()).doesNotContain(tags); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forTags_whichNotExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordTags tags = new KeywordTags(new RobotToken()); // execute final boolean state = keyword.removeUnitSettings(tags); // verify assertThat(state).isFalse(); assertThat(keyword.getTags()).doesNotContain(tags); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forArguments_whichExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordArguments args = keyword.newArguments(); // execute final boolean state = keyword.removeUnitSettings(args); // verify assertThat(state).isTrue(); assertThat(keyword.getArguments()).doesNotContain(args); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forArguments_whichNotExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordArguments args = new KeywordArguments(new RobotToken()); // execute final boolean state = keyword.removeUnitSettings(args); // verify assertThat(state).isFalse(); assertThat(keyword.getArguments()).doesNotContain(args); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forReturns_whichExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordReturn returns = keyword.newReturn(); // execute final boolean state = keyword.removeUnitSettings(returns); // verify assertThat(state).isTrue(); assertThat(keyword.getReturns()).doesNotContain(returns); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forReturns_whichNotExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordReturn returns = new KeywordReturn(new RobotToken()); // execute final boolean state = keyword.removeUnitSettings(returns); // verify assertThat(state).isFalse(); assertThat(keyword.getReturns()).doesNotContain(returns); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forTeardowns_whichExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordTeardown teardowns = keyword.newTeardown(); // execute final boolean state = keyword.removeUnitSettings(teardowns); // verify assertThat(state).isTrue(); assertThat(keyword.getTeardowns()).doesNotContain(teardowns); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forTeardowns_whichNotExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordTeardown teardowns = new KeywordTeardown(new RobotToken()); // execute final boolean state = keyword.removeUnitSettings(teardowns); // verify assertThat(state).isFalse(); assertThat(keyword.getTeardowns()).doesNotContain(teardowns); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forTimeouts_whichExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordTimeout timeouts = keyword.newTimeout(); // execute final boolean state = keyword.removeUnitSettings(timeouts); // verify assertThat(state).isTrue(); assertThat(keyword.getTimeouts()).doesNotContain(timeouts); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forTimeouts_whichNotExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordTimeout timeouts = new KeywordTimeout(new RobotToken()); // execute final boolean state = keyword.removeUnitSettings(timeouts); // verify assertThat(state).isFalse(); assertThat(keyword.getTimeouts()).doesNotContain(timeouts); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forUnknownSettings_whichExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordUnknownSettings unknownSetting = new KeywordUnknownSettings(new RobotToken()); keyword.addUnknownSettings(unknownSetting); // execute final boolean state = keyword.removeUnitSettings(unknownSetting); // verify assertThat(state).isTrue(); assertThat(keyword.getUnknownSettings()).doesNotContain(unknownSetting); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forUnknownSettings_whichNotExists() { // prepare final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); final KeywordUnknownSettings unknownSetting = new KeywordUnknownSettings(new RobotToken()); // execute final boolean state = keyword.removeUnitSettings(unknownSetting); // verify assertThat(state).isFalse(); assertThat(keyword.getUnknownSettings()).doesNotContain(unknownSetting); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } @Test public void forExecutableRow_shouldReturnFalse() { // prepare final RobotExecutableRow<UserKeyword> executionRow = new RobotExecutableRow<UserKeyword>(); keyword.addKeywordExecutionRow(executionRow); final List<AModelElement<UserKeyword>> settingsWhichShouldRemain = new ArrayList<>(keyword.getUnitSettings()); // execute final boolean state = keyword.removeUnitSettings(executionRow); // verify assertThat(state).isFalse(); assertThat(keyword.getExecutionContext()).contains(executionRow); assertThat(keyword.getUnitSettings()).containsOnlyElementsOf(settingsWhichShouldRemain); } private void addOthersToDoNotRemove(final UserKeyword uk) { uk.newDocumentation(); uk.newTags(); uk.newArguments(); uk.newReturn(); uk.newTeardown(); uk.newTimeout(); uk.addUnknownSettings(new KeywordUnknownSettings(new RobotToken())); } }