package org.robotframework.ide.eclipse.main.plugin.model; import static com.google.common.collect.Lists.newArrayList; import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.robotframework.ide.eclipse.main.plugin.mockmodel.RobotSuiteFileCreator; import com.google.common.base.Joiner; public class RobotSettingTest { @Test public void testProperObjectIsCreated() { for (final RobotKeywordCall setting : createSettingsForTest(new ArrayList<String>(), new ArrayList<String>())) { assertThat(setting).isExactlyInstanceOf(RobotSetting.class); } for (final RobotKeywordCall setting : createSettingsForTest(newArrayList("a"), new ArrayList<String>())) { assertThat(setting).isExactlyInstanceOf(RobotSetting.class); } for (final RobotKeywordCall setting : createSettingsForTest(newArrayList("a"), newArrayList("# c"))) { assertThat(setting).isExactlyInstanceOf(RobotSetting.class); } for (final RobotKeywordCall setting : createSettingsForTest(newArrayList("a", "b"), newArrayList("# c"))) { assertThat(setting).isExactlyInstanceOf(RobotSetting.class); } for (final RobotKeywordCall setting : createSettingsForTest(newArrayList("a", "b"), newArrayList("# c", "d"))) { assertThat(setting).isExactlyInstanceOf(RobotSetting.class); } } @Test public void testNameGetting() { assertNames(createSettingsForTest(new ArrayList<String>(), new ArrayList<String>())); assertNames(createSettingsForTest(newArrayList("a"), new ArrayList<String>())); assertNames(createSettingsForTest(newArrayList("a"), newArrayList("# c"))); assertNames(createSettingsForTest(newArrayList("a", "b"), newArrayList("# c"))); assertNames(createSettingsForTest(newArrayList("a", "b"), newArrayList("# c", "d"))); } @Test public void testArgumentsGetting() { for (final RobotKeywordCall setting : createSettingsForTest(new ArrayList<String>(), new ArrayList<String>())) { assertThat(setting.getArguments()).isEmpty(); } for (final RobotKeywordCall setting : createSettingsForTest(newArrayList("a"), new ArrayList<String>())) { assertThat(setting.getArguments()).containsExactly("a"); } for (final RobotKeywordCall setting : createSettingsForTest(newArrayList("a"), newArrayList("# c"))) { assertThat(setting.getArguments()).containsExactly("a"); } for (final RobotKeywordCall setting : createSettingsForTest(newArrayList("a", "b"), newArrayList("# c"))) { assertThat(setting.getArguments()).containsExactly("a", "b"); } for (final RobotKeywordCall setting : createSettingsForTest(newArrayList("a", "b"), newArrayList("# c", "d"))) { assertThat(setting.getArguments()).containsExactly("a", "b"); } for (final RobotKeywordCall setting : createSettingsForTest(newArrayList("a", "b", "c", "d", "e"), newArrayList("# c"))) { assertThat(setting.getArguments()).containsExactly("a", "b", "c", "d", "e"); } } private static void assertNames(final List<RobotKeywordCall> settings) { assertThat(settings.get(0).getName()).isEqualTo("Metadata"); assertThat(settings.get(1).getName()).isEqualTo("Library"); assertThat(settings.get(2).getName()).isEqualTo("Variables"); assertThat(settings.get(3).getName()).isEqualTo("Resource"); assertThat(settings.get(4).getName()).isEqualTo("Suite Setup"); assertThat(settings.get(5).getName()).isEqualTo("Suite Teardown"); assertThat(settings.get(6).getName()).isEqualTo("Test Setup"); assertThat(settings.get(7).getName()).isEqualTo("Test Teardown"); assertThat(settings.get(8).getName()).isEqualTo("Test Template"); assertThat(settings.get(9).getName()).isEqualTo("Test Timeout"); assertThat(settings.get(10).getName()).isEqualTo("Force Tags"); assertThat(settings.get(11).getName()).isEqualTo("Default Tags"); } private static List<RobotKeywordCall> createSettingsForTest(final List<String> arguments, final List<String> comments) { final String argsToAdd = arguments.isEmpty() ? "" : " " + Joiner.on(" ").join(arguments); final String commentsToAdd = comments.isEmpty() ? "" : " " + Joiner.on(" ").join(comments); final String toAdd = argsToAdd + commentsToAdd; final RobotSuiteFile model = new RobotSuiteFileCreator().appendLine("*** Test Cases ***") .appendLine("*** Settings ***") .appendLine("Metadata" + toAdd) .appendLine("Library" + toAdd) .appendLine("Variables" + toAdd) .appendLine("Resource" + toAdd) .appendLine("Suite Setup" + toAdd) .appendLine("Suite Teardown" + toAdd) .appendLine("Test Setup" + toAdd) .appendLine("Test Teardown" + toAdd) .appendLine("Test Template" + toAdd) .appendLine("Test Timeout" + toAdd) .appendLine("Force Tags" + toAdd) .appendLine("Default Tags" + toAdd) .build(); final RobotSettingsSection section = model.findSection(RobotSettingsSection.class).get(); return section.getChildren(); } }