package org.robotframework.ide.eclipse.main.plugin.navigator;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import java.util.ArrayList;
import java.util.EnumSet;
import org.eclipse.jface.viewers.Viewer;
import org.junit.Test;
import org.robotframework.ide.eclipse.main.plugin.mockmodel.NamedElement;
import org.robotframework.ide.eclipse.main.plugin.mockmodel.ParentElement;
import org.robotframework.ide.eclipse.main.plugin.model.RobotCase;
import org.robotframework.ide.eclipse.main.plugin.model.RobotCasesSection;
import org.robotframework.ide.eclipse.main.plugin.model.RobotDefinitionSetting;
import org.robotframework.ide.eclipse.main.plugin.model.RobotElement;
import org.robotframework.ide.eclipse.main.plugin.model.RobotFileInternalElement;
import org.robotframework.ide.eclipse.main.plugin.model.RobotFolder;
import org.robotframework.ide.eclipse.main.plugin.model.RobotKeywordCall;
import org.robotframework.ide.eclipse.main.plugin.model.RobotKeywordDefinition;
import org.robotframework.ide.eclipse.main.plugin.model.RobotKeywordsSection;
import org.robotframework.ide.eclipse.main.plugin.model.RobotProject;
import org.robotframework.ide.eclipse.main.plugin.model.RobotSetting;
import org.robotframework.ide.eclipse.main.plugin.model.RobotSetting.SettingsGroup;
import org.robotframework.ide.eclipse.main.plugin.model.RobotSettingsSection;
import org.robotframework.ide.eclipse.main.plugin.model.RobotSuiteFile;
import org.robotframework.ide.eclipse.main.plugin.model.RobotSuiteFileSection;
import org.robotframework.ide.eclipse.main.plugin.model.RobotVariable;
import org.robotframework.ide.eclipse.main.plugin.model.RobotVariablesSection;
public class SettingsSectionSorterTest {
private final SettingsSectionSorter sorter = new SettingsSectionSorter();
@Test
public void categoryIsAssignedOnlyForArtificailGroupingElements() throws Exception {
assertThat(sorter.category(mock(RobotProject.class))).isZero();
assertThat(sorter.category(mock(RobotFolder.class))).isZero();
assertThat(sorter.category(mock(RobotSuiteFile.class))).isZero();
assertThat(sorter.category(mock(RobotSuiteFileSection.class))).isZero();
assertThat(sorter.category(mock(RobotCasesSection.class))).isZero();
assertThat(sorter.category(mock(RobotKeywordsSection.class))).isZero();
assertThat(sorter.category(mock(RobotSettingsSection.class))).isZero();
assertThat(sorter.category(mock(RobotVariablesSection.class))).isZero();
assertThat(sorter.category(mock(RobotKeywordCall.class))).isZero();
assertThat(sorter.category(mock(RobotDefinitionSetting.class))).isZero();
assertThat(sorter.category(mock(RobotSetting.class))).isZero();
assertThat(sorter.category(mock(RobotCase.class))).isZero();
assertThat(sorter.category(mock(RobotKeywordDefinition.class))).isZero();
assertThat(sorter.category(mock(RobotVariable.class))).isZero();
assertThat(sorter.category(newGroup(SettingsGroup.METADATA))).isEqualTo(1);
assertThat(sorter.category(newGroup(SettingsGroup.NO_GROUP))).isEqualTo(1);
assertThat(sorter.category(newGroup(SettingsGroup.LIBRARIES))).isEqualTo(2);
assertThat(sorter.category(newGroup(SettingsGroup.RESOURCES))).isEqualTo(2);
assertThat(sorter.category(newGroup(SettingsGroup.VARIABLES))).isEqualTo(2);
}
@Test
public void ordinarySettingIsAlwaysBeforeGroup() {
for (final SettingsGroup group : EnumSet.allOf(SettingsGroup.class)) {
final ParentElement parent = new ParentElement();
final RobotElement e1 = new NamedElement(parent, "e1");
final RobotElement e2 = newGroup(group);
parent.getChildren().add(e1);
parent.getChildren().add(e2);
assertThat(sorter.compare(mock(Viewer.class), e1, e2)).isNegative();
}
}
private static ArtificialGroupingRobotElement newGroup(final SettingsGroup group) {
return new ArtificialGroupingRobotElement(group, new ArrayList<RobotFileInternalElement>());
}
}