/*
* Copyright 2016 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.assist;
import static com.google.common.collect.Lists.newArrayList;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import org.eclipse.jface.viewers.Stylers;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.graphics.TextStyle;
import org.junit.Test;
import org.robotframework.ide.eclipse.main.plugin.RedImages;
import com.google.common.collect.Range;
public class RedLibraryProposalTest {
@Test
public void testProposalWithEmptyContentAndEmptyMatch() {
final RedLibraryProposal proposal = new RedLibraryProposal("", new ArrayList<String>(), false,
"desc", ProposalMatch.EMPTY);
assertThat(proposal.getContent()).isEmpty();
assertThat(proposal.getArguments()).isEmpty();
assertThat(proposal.isImported()).isFalse();
assertThat(proposal.getImage()).isEqualTo(RedImages.getLibraryImage());
assertThat(proposal.getLabel()).isEmpty();
assertThat(proposal.getStyledLabel().length()).isEqualTo(0);
assertThat(proposal.hasDescription()).isTrue();
assertThat(proposal.getDescription()).isEqualTo("desc");
}
@Test
public void testProposalWithNonEmptyContentEmptyArgumentsAndEmptyMatch() {
final RedLibraryProposal proposal = new RedLibraryProposal("content", new ArrayList<String>(), false, "desc",
ProposalMatch.EMPTY);
assertThat(proposal.getContent()).isEqualTo("content");
assertThat(proposal.getArguments()).isEmpty();
assertThat(proposal.isImported()).isFalse();
assertThat(proposal.getImage()).isEqualTo(RedImages.getLibraryImage());
assertThat(proposal.getLabel()).isEqualTo("content");
assertThat(proposal.getStyledLabel().getString()).isEqualTo("content");
assertThat(proposal.getStyledLabel().getStyleRanges()).isEmpty();
assertThat(proposal.hasDescription()).isTrue();
assertThat(proposal.getDescription()).isEqualTo("desc");
}
@Test
public void testProposalWithNonEmptyContentNonEmptyArgumentsAndEmptyMatch() {
final RedLibraryProposal proposal = new RedLibraryProposal("content", newArrayList("arg1", "arg2"), false,
"desc", ProposalMatch.EMPTY);
assertThat(proposal.getContent()).isEqualTo("content");
assertThat(proposal.getArguments()).containsExactly("arg1", "arg2");
assertThat(proposal.isImported()).isFalse();
assertThat(proposal.getImage()).isEqualTo(RedImages.getLibraryImage());
assertThat(proposal.getLabel()).isEqualTo("content arg1 arg2");
assertThat(proposal.getStyledLabel().getString()).isEqualTo("content arg1 arg2");
assertThat(proposal.getStyledLabel().getStyleRanges()).isEmpty();
assertThat(proposal.hasDescription()).isTrue();
assertThat(proposal.getDescription()).isEqualTo("desc");
}
@Test
public void testAlreadyImportedProposalWithNonEmptyContentNonEmptyArgumentsAndEmptyMatch() {
final RedLibraryProposal proposal = new RedLibraryProposal("content", newArrayList("arg1", "arg2"), true,
"desc", ProposalMatch.EMPTY);
assertThat(proposal.getContent()).isEqualTo("content");
assertThat(proposal.getArguments()).containsExactly("arg1", "arg2");
assertThat(proposal.isImported()).isTrue();
assertThat(proposal.getImage()).isEqualTo(RedImages.getLibraryImage());
assertThat(proposal.getLabel()).isEqualTo("content arg1 arg2");
assertThat(proposal.getStyledLabel().getString()).isEqualTo("content arg1 arg2 (already imported)");
final TextStyle decorationStyle = new TextStyle();
Stylers.Common.ECLIPSE_DECORATION_STYLER.applyStyles(decorationStyle);
final StyleRange[] ranges = proposal.getStyledLabel().getStyleRanges();
assertThat(ranges).hasSize(1);
assertThat(ranges[0].background).isNull();
assertThat(ranges[0].foreground.getRGB()).isEqualTo(decorationStyle.foreground.getRGB());
assertThat(ranges[0].borderColor).isNull();
assertThat(ranges[0].borderStyle).isEqualTo(decorationStyle.borderStyle);
assertThat(ranges[0].strikeout).isFalse();
assertThat(ranges[0].start).isEqualTo(17);
assertThat(ranges[0].length).isEqualTo(19);
assertThat(proposal.hasDescription()).isTrue();
assertThat(proposal.getDescription()).isEqualTo("desc");
}
@Test
public void testAlreadyImportedProposalWithNonEmptyContentNonEmptyArgumentsAndNonEmptyMatch() {
final RedLibraryProposal proposal = new RedLibraryProposal("content", newArrayList("arg1", "arg2"), true,
"desc", new ProposalMatch(Range.closedOpen(1, 5)));
assertThat(proposal.getContent()).isEqualTo("content");
assertThat(proposal.getArguments()).containsExactly("arg1", "arg2");
assertThat(proposal.isImported()).isTrue();
assertThat(proposal.getImage()).isEqualTo(RedImages.getLibraryImage());
assertThat(proposal.getLabel()).isEqualTo("content arg1 arg2");
assertThat(proposal.getStyledLabel().getString()).isEqualTo("content arg1 arg2 (already imported)");
final TextStyle decorationStyle = new TextStyle();
Stylers.Common.ECLIPSE_DECORATION_STYLER.applyStyles(decorationStyle);
final TextStyle matchStyle = new TextStyle();
Stylers.Common.MARKED_PREFIX_STYLER.applyStyles(matchStyle);
final StyleRange[] ranges = proposal.getStyledLabel().getStyleRanges();
assertThat(ranges).hasSize(2);
assertThat(ranges[0].background.getRGB()).isEqualTo(matchStyle.background.getRGB());
assertThat(ranges[0].foreground.getRGB()).isEqualTo(matchStyle.foreground.getRGB());
assertThat(ranges[0].borderColor.getRGB()).isEqualTo(matchStyle.borderColor.getRGB());
assertThat(ranges[0].borderStyle).isEqualTo(matchStyle.borderStyle);
assertThat(ranges[0].strikeout).isFalse();
assertThat(ranges[0].start).isEqualTo(1);
assertThat(ranges[0].length).isEqualTo(4);
assertThat(ranges[1].background).isNull();
assertThat(ranges[1].foreground.getRGB()).isEqualTo(decorationStyle.foreground.getRGB());
assertThat(ranges[1].borderColor).isNull();
assertThat(ranges[1].borderStyle).isEqualTo(decorationStyle.borderStyle);
assertThat(ranges[1].strikeout).isFalse();
assertThat(ranges[1].start).isEqualTo(17);
assertThat(ranges[1].length).isEqualTo(19);
assertThat(proposal.hasDescription()).isTrue();
assertThat(proposal.getDescription()).isEqualTo("desc");
}
}