/* * 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.Iterables.transform; import static org.assertj.core.api.Assertions.assertThat; import static org.robotframework.ide.eclipse.main.plugin.assist.Commons.substringMatcher; import static org.robotframework.ide.eclipse.main.plugin.assist.Commons.toLabels; import java.util.List; import org.junit.Test; public class RedWithNameProposalsTest { @Test public void noProposalsAreProvided_whenPredicateIsAlwaysFalse() { final AssistProposalPredicate<String> predicateWordHasToSatisfy = AssistProposalPredicates.alwaysFalse(); final RedWithNameProposals proposalsProvider = new RedWithNameProposals(predicateWordHasToSatisfy); final List<? extends AssistProposal> proposals = proposalsProvider.getWithNameProposals(""); assertThat(proposals).isEmpty(); } @Test public void allProposalsAreProvided_whenPredicateIsAlwaysTrue() { final AssistProposalPredicate<String> predicateWordHasToSatisfy = AssistProposalPredicates.alwaysTrue(); final RedWithNameProposals proposalsProvider = new RedWithNameProposals(predicateWordHasToSatisfy); final List<? extends AssistProposal> proposals = proposalsProvider.getWithNameProposals(""); assertThat(transform(proposals, toLabels())).containsExactly("WITH NAME"); } @Test public void onlyProposalsMatchingPredicateAreProvided_whenPredicateSelectsThem() { final AssistProposalPredicate<String> predicateWordHasToSatisfy = new AssistProposalPredicate<String>() { @Override public boolean apply(final String word) { return word.length() < 4; } }; final RedWithNameProposals proposalsProvider = new RedWithNameProposals(predicateWordHasToSatisfy); final List<? extends AssistProposal> proposals = proposalsProvider.getWithNameProposals(""); assertThat(proposals).isEmpty(); } @Test public void onlyProposalsMatchingPredicateAreProvided_whenPredicateCannotSelectThem() { final AssistProposalPredicate<String> predicateWordHasToSatisfy = new AssistProposalPredicate<String>() { @Override public boolean apply(final String word) { return word.length() > 4; } }; final RedWithNameProposals proposalsProvider = new RedWithNameProposals(predicateWordHasToSatisfy); final List<? extends AssistProposal> proposals = proposalsProvider.getWithNameProposals(""); assertThat(transform(proposals, toLabels())).containsExactly("WITH NAME"); } @Test public void onlyProposalsMatchingPrefixAreProvided_whenPrefixIsGivenAndDefaultMatcherIsUsed() { final RedWithNameProposals proposalsProvider = new RedWithNameProposals( AssistProposalPredicates.<String> alwaysTrue()); final List<? extends AssistProposal> proposals = proposalsProvider.getWithNameProposals("with"); assertThat(transform(proposals, toLabels())).containsExactly("WITH NAME"); } @Test public void onlyProposalsMatchingGivenMatcherAreProvided_whenMatcherIsGiven() { final RedWithNameProposals proposalsProvider = new RedWithNameProposals(substringMatcher(), AssistProposalPredicates.<String> alwaysTrue()); final List<? extends AssistProposal> proposals = proposalsProvider.getWithNameProposals("am"); assertThat(transform(proposals, toLabels())).containsExactly("WITH NAME"); } }