blob: 43b3ac9f9c6c88667898606b7222a16b34314f83 [file] [log] [blame]
/*
* Copyright (c) 2011 Google Inc.
*
* All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
* Public License v1.0 which accompanies this distribution, and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/
package com.google.eclipse.protobuf.ui.documentation;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;
import org.eclipse.emf.ecore.EObject;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Tests for <code>{@link ProtobufDocumentationProvider#getDocumentation(EObject)}</code>
*
* @author alruiz@google.com (Alex Ruiz)
*/
public class ProtobufDocumentationProvider_getDocumentation_Test {
private static EObject o;
@BeforeClass public static void setUpOnce() {
o = mock(EObject.class);
}
private SLCommentDocumentationProvider delegate1;
private MLCommentDocumentationProvider delegate2;
private ProtobufDocumentationProvider provider;
@Before public void setUp() {
delegate1 = mock(SLCommentDocumentationProvider.class);
delegate2 = mock(MLCommentDocumentationProvider.class);
provider = new ProtobufDocumentationProvider(delegate1, delegate2);
}
@Test public void should_use_first_delegate_if_it_returns_comment() {
String comment = "Hello World";
when(delegate1.getDocumentation(o)).thenReturn(comment);
assertThat(provider.getDocumentation(o), equalTo(comment));
verify(delegate1).getDocumentation(o);
verifyZeroInteractions(delegate2);
}
@Test public void should_use_second_delegage_if_first_does_not_return_comment() {
when(delegate1.getDocumentation(o)).thenReturn("");
String comment = "Hello World";
when(delegate2.getDocumentation(o)).thenReturn(comment);
assertThat(provider.getDocumentation(o), equalTo(comment));
verifyAllDelegatesWereInvoked();
}
@Test public void should_return_empty_String_if_delegates_do_not_return_comment() {
when(delegate1.getDocumentation(o)).thenReturn("");
when(delegate2.getDocumentation(o)).thenReturn("");
assertThat(provider.getDocumentation(o), equalTo(""));
verifyAllDelegatesWereInvoked();
}
private void verifyAllDelegatesWereInvoked() {
verify(delegate1).getDocumentation(o);
verify(delegate2).getDocumentation(o);
}
}