/*
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.uberfire.annotations.processors;
import java.io.FileNotFoundException;
import java.util.List;
import javax.tools.Diagnostic;
import javax.tools.Diagnostic.Kind;
import javax.tools.JavaFileObject;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Tests for Pop-up related class generation
*/
public class WorkbenchPopupProcessorTest extends AbstractProcessorTest {
final Result result = new Result();
@Override
protected AbstractErrorAbsorbingProcessor getProcessorUnderTest() {
return new WorkbenchPopupProcessor(new GenerationCompleteCallback() {
@Override
public void generationComplete(String code) {
result.setActualCode(code);
}
});
}
@Test
public void testNoWorkbenchPopupAnnotation() throws FileNotFoundException {
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
"org/uberfire/annotations/processors/WorkbenchPopupTest1");
assertSuccessfulCompilation(diagnostics);
assertNull(result.getActualCode());
}
@Test
public void testWorkbenchPopupAnnotationMissingViewAnnotation() {
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
"org/uberfire/annotations/processors/WorkbenchPopupTest2");
assertFailedCompilation(diagnostics);
assertCompilationMessage(diagnostics,
Kind.ERROR,
Diagnostic.NOPOS,
Diagnostic.NOPOS,
"org.uberfire.annotations.processors.WorkbenchPopupTest2Activity: The WorkbenchPopup must either extend IsWidget or provide a @WorkbenchPartView annotated method to return a com.google.gwt.user.client.ui.IsWidget.");
assertNull(result.getActualCode());
}
@Test
public void testWorkbenchPopupHasViewAnnotation() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest3";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest3.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
@Test
public void testWorkbenchPopupExtendsIsWidget() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest4";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest4.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
@Test
public void testWorkbenchPopupHasViewAnnotationAndExtendsIsWidget() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest5";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest5.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertCompilationMessage(diagnostics,
Kind.WARNING,
Diagnostic.NOPOS,
Diagnostic.NOPOS,
"The WorkbenchPopup both extends com.google.gwt.user.client.ui.IsWidget and provides a @WorkbenchPartView annotated method. The annotated method will take precedence.");
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
@Test
public void testWorkbenchPopupAllAnnotations() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest6";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest6.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
@Test
public void testWorkbenchPopupOnStart0Parameter() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest7";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest7.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
@Test
public void testWorkbenchPopupOnStart1Parameter() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest8";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest8.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
@Test
public void testWorkbenchPopupOnStartMultipleMethods() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest9";
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertFailedCompilation(diagnostics);
assertCompilationMessage(diagnostics,
Kind.ERROR,
24,
17,
"Found multiple @OnStartup methods. Each class can declare at most one.");
}
@Test
public void testWorkbenchPopupHasTitleWidget() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest10";
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertFailedCompilation(diagnostics);
assertCompilationMessage(diagnostics,
Kind.ERROR,
Diagnostic.NOPOS,
Diagnostic.NOPOS,
"org.uberfire.annotations.processors.WorkbenchPopupTest10Activity: The WorkbenchPopup must provide a @WorkbenchPartTitle annotated method to return a java.lang.String.");
assertNull(result.getActualCode());
}
@Test
public void testWorkbenchPopupHasTitleAndTitleWidget() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest11";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest11.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
@Test
public void testPopupWithActivator() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest12";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest12.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
@Test
public void testPopupSize() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest13";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest13.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
@Test
public void testQualifiersInTheActivity() throws FileNotFoundException {
final String pathCompilationUnit = "org/uberfire/annotations/processors/WorkbenchPopupTest14";
final String pathExpectedResult = "org/uberfire/annotations/processors/expected/WorkbenchPopupTest14.expected";
result.setExpectedCode(getExpectedSourceCode(pathExpectedResult));
final List<Diagnostic<? extends JavaFileObject>> diagnostics = compile(
getProcessorUnderTest(),
pathCompilationUnit);
assertSuccessfulCompilation(diagnostics);
assertNotNull(result.getActualCode());
assertNotNull(result.getExpectedCode());
assertEquals(result.getExpectedCode(),
result.getActualCode());
}
}