/* * 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.tableeditor.assist; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.StyledString; import org.junit.Test; import org.robotframework.ide.eclipse.main.plugin.RedImages; import org.robotframework.ide.eclipse.main.plugin.assist.AssistProposal; import org.robotframework.red.jface.assist.RedContentProposal.ModificationStrategy; import org.robotframework.red.jface.assist.RedTextContentAdapter.SubstituteTextModificationStrategy; public class AssistProposalAdapterTest { @Test public void contentIsTakenFromAdaptedProposalWithAddition() { final AssistProposal proposal = mock(AssistProposal.class); when(proposal.getContent()).thenReturn("content"); assertThat(new AssistProposalAdapter(proposal).getContent()).isEqualTo("content"); assertThat(new AssistProposalAdapter(proposal, " enhanced").getContent()).isEqualTo("content enhanced"); } @Test public void cursorPositionIsAlwaysAtTheEndOfContent() { final AssistProposal proposal = mock(AssistProposal.class); when(proposal.getContent()).thenReturn("content"); assertThat(new AssistProposalAdapter(proposal).getCursorPosition()).isEqualTo(7); assertThat(new AssistProposalAdapter(proposal, " enhanced").getCursorPosition()).isEqualTo(16); } @Test public void imageIsTakenFromAdaptedProposal() { final ImageDescriptor imageDescriptor = RedImages.getRobotImage(); final AssistProposal proposal = mock(AssistProposal.class); when(proposal.getImage()).thenReturn(imageDescriptor); assertThat(new AssistProposalAdapter(proposal).getImage()).isSameAs(imageDescriptor); } @Test public void styledLabelIsTakenFromAdaptedProposal() { final StyledString label = new StyledString("foo"); final AssistProposal proposal = mock(AssistProposal.class); when(proposal.getStyledLabel()).thenReturn(label); assertThat(new AssistProposalAdapter(proposal).getStyledLabel()).isSameAs(label); } @Test public void labelIsTakenFromAdaptedProposal() { final AssistProposal proposal = mock(AssistProposal.class); when(proposal.getLabel()).thenReturn("label"); assertThat(new AssistProposalAdapter(proposal).getLabel()).isSameAs("label"); } @Test public void hasDescriptionIsTakenFromAdaptedProposal() { final AssistProposal proposal1 = mock(AssistProposal.class); when(proposal1.hasDescription()).thenReturn(true); final AssistProposal proposal2 = mock(AssistProposal.class); when(proposal2.hasDescription()).thenReturn(false); assertThat(new AssistProposalAdapter(proposal1).hasDescription()).isTrue(); assertThat(new AssistProposalAdapter(proposal2).hasDescription()).isFalse(); } @Test public void descriptionIsTakenFromAdaptedProposal() { final AssistProposal proposal1 = mock(AssistProposal.class); when(proposal1.getDescription()).thenReturn("desc"); assertThat(new AssistProposalAdapter(proposal1).getDescription()).isEqualTo("desc"); } @Test public void substituteStrategyIsAlwaysProvided_whenNoOtherStrategyWasPassedToConstructor() { final AssistProposal proposal = mock(AssistProposal.class); assertThat(new AssistProposalAdapter(proposal).getModificationStrategy()) .isExactlyInstanceOf(SubstituteTextModificationStrategy.class); assertThat(new AssistProposalAdapter(proposal, "").getModificationStrategy()) .isExactlyInstanceOf(SubstituteTextModificationStrategy.class); assertThat(new AssistProposalAdapter(proposal, (ModificationStrategy) null).getModificationStrategy()) .isExactlyInstanceOf(SubstituteTextModificationStrategy.class); } @Test public void modificationStrategyIsProvided_whenPassedToConstructor() { final AssistProposal proposal = mock(AssistProposal.class); final ModificationStrategy strategy = mock(ModificationStrategy.class); assertThat(new AssistProposalAdapter(proposal, strategy).getModificationStrategy()).isSameAs(strategy); } }