blob: 95a1897c5ceebb6e7f3afeb2b5ac202ad2d8e430 [file] [log] [blame]
/*
* Copyright 2011 Google Inc.
*
* 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 com.google.gwt.resources.rg;
import com.google.gwt.core.ext.GeneratorContext;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.linker.GeneratedResource;
import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.core.ext.typeinfo.JMethod;
import com.google.gwt.dev.util.UnitTestTreeLogger;
import com.google.gwt.resources.ext.ResourceContext;
import junit.framework.TestCase;
import org.easymock.EasyMock;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Tests output functions.
*/
public class CssOutputTestCase extends TestCase {
public void testOutputCssMapArtifact() throws UnableToCompleteException {
UnitTestTreeLogger testLogger = new UnitTestTreeLogger.Builder().createLogger();
ResourceContext mockResourceContext = EasyMock.createMock(ResourceContext.class);
Map<JMethod, String> testMap = new HashMap<JMethod, String>();
OutputStream mockOutputStream = EasyMock.createMock(OutputStream.class);
GeneratorContext mockGeneratorContext = EasyMock.createMock(GeneratorContext.class);
GeneratedResource mockGeneratedResource = EasyMock.createMock(GeneratedResource.class);
EasyMock.expect(mockResourceContext.getGeneratorContext()).andReturn(mockGeneratorContext);
EasyMock.expectLastCall().times(2);
EasyMock.expect(mockGeneratorContext.tryCreateResource(
testLogger, "cssResource/com.test.Bundle.cssMethod.cssmap")).andReturn(mockOutputStream);
EasyMock.expect(mockGeneratorContext.commitResource(testLogger, mockOutputStream)).andReturn(
mockGeneratedResource);
JMethod method = EasyMock.createMock(JMethod.class);
JClassType bundleType = EasyMock.createMock(JClassType.class);
EasyMock.expect(method.getEnclosingType()).andReturn(bundleType);
EasyMock.expect(bundleType.getQualifiedSourceName()).andReturn("com.test.Bundle");
EasyMock.expect(method.getName()).andReturn("cssMethod");
EasyMock.replay(mockResourceContext);
EasyMock.replay(mockGeneratorContext);
EasyMock.replay(method);
EasyMock.replay(bundleType);
CssResourceGenerator crg = new CssResourceGenerator();
crg.outputCssMapArtifact(testLogger, mockResourceContext, method, testMap);
testLogger.assertCorrectLogEntries();
EasyMock.verify(mockResourceContext);
EasyMock.verify(mockGeneratorContext);
EasyMock.verify(method);
EasyMock.verify(bundleType);
}
public void testOutputCssMapArtifactThrowOnTryCreateResource() throws UnableToCompleteException {
UnitTestTreeLogger.Builder builder = new UnitTestTreeLogger.Builder();
builder.expectWarn(
"Could not create resource: cssResource/com.test.Bundle.cssMethod.cssmap", null);
UnitTestTreeLogger testLogger = builder.createLogger();
ResourceContext mockResourceContext = EasyMock.createMock(ResourceContext.class);
Map<JMethod, String> testMap = new HashMap<JMethod, String>();
OutputStream mockOutputStream = EasyMock.createMock(OutputStream.class);
GeneratorContext mockGeneratorContext = EasyMock.createMock(GeneratorContext.class);
GeneratedResource mockGeneratedResource = EasyMock.createMock(GeneratedResource.class);
EasyMock.expect(mockResourceContext.getGeneratorContext()).andReturn(mockGeneratorContext);
EasyMock.expect(mockGeneratorContext.tryCreateResource(testLogger,
"cssResource/com.test.Bundle.cssMethod.cssmap")).andThrow(new UnableToCompleteException());
JMethod method = EasyMock.createMock(JMethod.class);
JClassType bundleType = EasyMock.createMock(JClassType.class);
EasyMock.expect(method.getEnclosingType()).andReturn(bundleType);
EasyMock.expect(bundleType.getQualifiedSourceName()).andReturn("com.test.Bundle");
EasyMock.expect(method.getName()).andReturn("cssMethod");
EasyMock.replay(mockResourceContext);
EasyMock.replay(mockGeneratorContext);
EasyMock.replay(method);
EasyMock.replay(bundleType);
CssResourceGenerator crg = new CssResourceGenerator();
crg.outputCssMapArtifact(testLogger, mockResourceContext, method, testMap);
testLogger.assertCorrectLogEntries();
EasyMock.verify(mockResourceContext);
EasyMock.verify(mockGeneratorContext);
EasyMock.verify(method);
EasyMock.verify(bundleType);
}
public void testOutputCssMapArtifactReturnNullOutputString() throws UnableToCompleteException {
UnitTestTreeLogger testLogger = new UnitTestTreeLogger.Builder().createLogger();
ResourceContext mockResourceContext = EasyMock.createMock(ResourceContext.class);
Map<JMethod, String> testMap = new HashMap<JMethod, String>();
OutputStream mockOutputStream = EasyMock.createMock(OutputStream.class);
GeneratorContext mockGeneratorContext = EasyMock.createMock(GeneratorContext.class);
GeneratedResource mockGeneratedResource = EasyMock.createMock(GeneratedResource.class);
EasyMock.expect(mockResourceContext.getGeneratorContext()).andReturn(mockGeneratorContext);
EasyMock.expect(mockGeneratorContext.tryCreateResource(
testLogger, "cssResource/com.test.Bundle.cssMethod.cssmap")).andReturn(null);
JMethod method = EasyMock.createMock(JMethod.class);
JClassType bundleType = EasyMock.createMock(JClassType.class);
EasyMock.expect(method.getEnclosingType()).andReturn(bundleType);
EasyMock.expect(bundleType.getQualifiedSourceName()).andReturn("com.test.Bundle");
EasyMock.expect(method.getName()).andReturn("cssMethod");
EasyMock.replay(mockResourceContext);
EasyMock.replay(mockGeneratorContext);
EasyMock.replay(method);
EasyMock.replay(bundleType);
CssResourceGenerator crg = new CssResourceGenerator();
crg.outputCssMapArtifact(testLogger, mockResourceContext, method, testMap);
testLogger.assertCorrectLogEntries();
EasyMock.verify(mockResourceContext);
EasyMock.verify(mockGeneratorContext);
EasyMock.verify(method);
EasyMock.verify(bundleType);
}
public void testOutputCssMapArtifactThrowOnCommitResource() throws UnableToCompleteException {
UnitTestTreeLogger.Builder builder = new UnitTestTreeLogger.Builder();
builder.expectWarn(
"Error trying to commit artifact: cssResource/com.test.Bundle.cssMethod.cssmap", null);
UnitTestTreeLogger testLogger = builder.createLogger();
ResourceContext mockResourceContext = EasyMock.createMock(ResourceContext.class);
Map<JMethod, String> testMap = new HashMap<JMethod, String>();
OutputStream mockOutputStream = EasyMock.createMock(OutputStream.class);
GeneratorContext mockGeneratorContext = EasyMock.createMock(GeneratorContext.class);
GeneratedResource mockGeneratedResource = EasyMock.createMock(GeneratedResource.class);
EasyMock.expect(mockResourceContext.getGeneratorContext()).andReturn(mockGeneratorContext);
EasyMock.expectLastCall().times(2);
EasyMock.expect(mockGeneratorContext.tryCreateResource(
testLogger, "cssResource/com.test.Bundle.cssMethod.cssmap")).andReturn(mockOutputStream);
EasyMock.expect(mockGeneratorContext.commitResource(testLogger, mockOutputStream)).andThrow(
new UnableToCompleteException());
JMethod method = EasyMock.createMock(JMethod.class);
JClassType bundleType = EasyMock.createMock(JClassType.class);
EasyMock.expect(method.getEnclosingType()).andReturn(bundleType);
EasyMock.expect(bundleType.getQualifiedSourceName()).andReturn("com.test.Bundle");
EasyMock.expect(method.getName()).andReturn("cssMethod");
EasyMock.replay(mockResourceContext);
EasyMock.replay(mockGeneratorContext);
EasyMock.replay(method);
EasyMock.replay(bundleType);
CssResourceGenerator crg = new CssResourceGenerator();
crg.outputCssMapArtifact(testLogger, mockResourceContext, method, testMap);
testLogger.assertCorrectLogEntries();
EasyMock.verify(mockResourceContext);
EasyMock.verify(mockGeneratorContext);
EasyMock.verify(method);
EasyMock.verify(bundleType);
}
public void testOutputCssMapArtifactWithTestData() throws UnableToCompleteException {
UnitTestTreeLogger testLogger = new UnitTestTreeLogger.Builder().createLogger();
ResourceContext mockResourceContext = EasyMock.createMock(ResourceContext.class);
JMethod mockJMethod1 = EasyMock.createMock(JMethod.class);
JMethod mockJMethod2 = EasyMock.createMock(JMethod.class);
JMethod mockJMethod3 = EasyMock.createMock(JMethod.class);
JClassType mockJClassType1 = EasyMock.createMock(JClassType.class);
JClassType mockJClassType2 = EasyMock.createMock(JClassType.class);
JClassType mockJClassType3 = EasyMock.createMock(JClassType.class);
Map<JMethod, String> testMap = new LinkedHashMap<JMethod, String>();
testMap.put(mockJMethod1, "TESTCSSNAME1");
testMap.put(mockJMethod2, "TESTCSSNAME2");
testMap.put(mockJMethod3, "TESTCSSNAME3");
ByteArrayOutputStream testOutputStream = new ByteArrayOutputStream();
GeneratorContext mockGeneratorContext = EasyMock.createMock(GeneratorContext.class);
GeneratedResource mockGeneratedResource = EasyMock.createMock(GeneratedResource.class);
EasyMock.expect(mockResourceContext.getGeneratorContext()).andReturn(mockGeneratorContext);
EasyMock.expectLastCall().times(2);
EasyMock.expect(mockGeneratorContext.tryCreateResource(
testLogger, "cssResource/com.test.Bundle.cssMethod.cssmap")).andReturn(testOutputStream);
EasyMock.expect(mockJMethod1.getEnclosingType()).andReturn(mockJClassType1);
EasyMock.expect(mockJClassType1.getQualifiedSourceName()).andReturn("test.class.type.1");
EasyMock.expect(mockJMethod1.getName()).andReturn("basename1");
EasyMock.expect(mockJMethod2.getEnclosingType()).andReturn(mockJClassType2);
EasyMock.expect(mockJClassType2.getQualifiedSourceName()).andReturn("test.class.type.2");
EasyMock.expect(mockJMethod2.getName()).andReturn("basename2");
EasyMock.expect(mockJMethod3.getEnclosingType()).andReturn(mockJClassType3);
EasyMock.expect(mockJClassType3.getQualifiedSourceName()).andReturn("test.class.type.3");
EasyMock.expect(mockJMethod3.getName()).andReturn("basename3");
EasyMock.expect(mockGeneratorContext.commitResource(testLogger, testOutputStream)).andReturn(
mockGeneratedResource);
JMethod method = EasyMock.createMock(JMethod.class);
JClassType bundleType = EasyMock.createMock(JClassType.class);
EasyMock.expect(method.getEnclosingType()).andReturn(bundleType);
EasyMock.expect(bundleType.getQualifiedSourceName()).andReturn("com.test.Bundle");
EasyMock.expect(method.getName()).andReturn("cssMethod");
EasyMock.replay(mockResourceContext);
EasyMock.replay(mockGeneratorContext);
EasyMock.replay(mockJMethod1);
EasyMock.replay(mockJMethod2);
EasyMock.replay(mockJMethod3);
EasyMock.replay(mockJClassType1);
EasyMock.replay(mockJClassType2);
EasyMock.replay(mockJClassType3);
EasyMock.replay(method);
EasyMock.replay(bundleType);
CssResourceGenerator crg = new CssResourceGenerator();
crg.outputCssMapArtifact(testLogger, mockResourceContext, method, testMap);
String expectedOutput = "test-class-type-1-basename1,TESTCSSNAME1\n" +
"test-class-type-2-basename2,TESTCSSNAME2\n" +
"test-class-type-3-basename3,TESTCSSNAME3\n";
assertEquals(expectedOutput, testOutputStream.toString());
testLogger.assertCorrectLogEntries();
EasyMock.verify(mockResourceContext);
EasyMock.verify(mockGeneratorContext);
EasyMock.verify(mockJMethod1);
EasyMock.verify(mockJMethod2);
EasyMock.verify(mockJMethod3);
EasyMock.verify(mockJClassType1);
EasyMock.verify(mockJClassType2);
EasyMock.verify(mockJClassType3);
EasyMock.verify(method);
EasyMock.verify(bundleType);
}
}