/** * */ package com.google.gwt.chrome.crx.linker; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import com.google.gwt.chrome.crx.linker.emiter.Emiter; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.ext.Generator; import com.google.gwt.core.ext.GeneratorContext; import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; import com.google.gwt.core.ext.typeinfo.JClassType; import com.google.gwt.core.ext.typeinfo.JPackage; import com.google.gwt.core.ext.typeinfo.JRealClassType; import com.google.gwt.core.ext.typeinfo.NotFoundException; import com.google.gwt.core.ext.typeinfo.TypeOracle; /** * @author webdizz * */ public class GwtContentScriptGeneratorTest { @Mock private TreeLogger logger; @Mock private GeneratorContext context; @Mock private JClassType userType; private static final String TYPE_NAME = Emiter.GWT_CONTENTSCRIPT_ENTRYPOINT_USER_TYPE; private static final String PATH = TYPE_NAME.replace('.', '_') + "_generated"; private static final String PACKAGE_NAME = TYPE_NAME.substring(0, TYPE_NAME.lastIndexOf('.')); private JClassType[] interfaces; @Before public void setUp() throws NotFoundException { MockitoAnnotations.initMocks(this); interfaces = new JClassType[] { new JRealClassType(mock(TypeOracle.class), mock(JPackage.class), EntryPoint.class.getCanonicalName(), false, EntryPoint.class.getSimpleName(), true) }; TypeOracle typeOracle = mock(TypeOracle.class); when(userType.getSimpleSourceName()).thenReturn(PATH); when(userType.getImplementedInterfaces()).thenReturn(interfaces); JPackage jPackage = mock(JPackage.class); when(jPackage.getName()).thenReturn(PACKAGE_NAME); when(userType.getPackage()).thenReturn(jPackage); when(typeOracle.getType(TYPE_NAME)).thenReturn(userType); when(context.getTypeOracle()).thenReturn(typeOracle); } @Test(expected = UnableToCompleteException.class) public void shouldThrowUnableToCompleteExceptionIfUnsupportedType() throws UnableToCompleteException, NotFoundException { TypeOracle typeOracle = mock(TypeOracle.class); when(typeOracle.getType(TYPE_NAME)).thenThrow(new NotFoundException()); when(context.getTypeOracle()).thenReturn(typeOracle); invokeCodeGeneration(); } protected String invokeCodeGeneration() throws UnableToCompleteException { Generator generator = new GwtContentScriptGenerator(); return generator.generate(logger, context, TYPE_NAME); } }