@SuppressWarnings("unchecked") private DefaultJsCompiler mockDefaultJsCompiler(JsResponse res, Iterable<JsContent> content) { DefaultJsCompiler result = createMock(DefaultJsCompiler.class); expect(result.getJsContent(isA(JsUri.class), isA(FeatureBundle.class))) .andReturn(content).anyTimes(); expect(result.compile(isA(JsUri.class), isA(Iterable.class), isA(String.class))) .andReturn(res).anyTimes(); replay(result); return result; }
@Before public void setUp() throws Exception { compiler = new DefaultJsCompiler(); }
public Iterable<JsContent> getJsContent(JsUri jsUri, FeatureBundle bundle) { List<JsContent> jsContent = Lists.newLinkedList(); for (FeatureResource resource : bundle.getResources()) { String content = getFeatureContent(jsUri, resource); content = (content != null) ? content : ""; if (resource.isExternal()) { // Support external/type=url feature serving through document.write() jsContent.add(JsContent.fromFeature("document.write('<script src=\"" + content + "\"></script>')", "[external:" + content + ']', bundle, resource)); } else { jsContent.add(JsContent.fromFeature(content, resource.getName(), bundle, resource)); } jsContent.add(JsContent.fromFeature(";\n", "[separator]", bundle, resource)); } return jsContent; }
public Iterable<JsContent> getJsContent(JsUri jsUri, FeatureBundle bundle) { jsUri = new JsUri(jsUri) { @Override public boolean isDebug() { // Force debug JS in the raw JS content retrieved. return true; } }; List<JsContent> builder = Lists.newLinkedList(defaultCompiler.getJsContent(jsUri, bundle)); CompilerOptions options = getCompilerOptions(jsUri); if (options.isExternExportsEnabled()) { List<String> exports = Lists.newArrayList(bundle.getApis(ApiDirective.Type.JS, true)); Collections.sort(exports); String prevExport = null; for (String export : exports) { if (!export.equals(prevExport)) { builder.add(JsContent.fromText( "goog.exportSymbol('" + StringEscapeUtils.escapeEcmaScript(export) + "', " + export + ");\n", "[export-symbol]")); prevExport = export; } } } return builder; }
JsResponse defaultCompiled = defaultCompiler.compile(jsUri, Lists.newArrayList(code), externs);
@Test public void testGetJsContentWithOpt() throws Exception { JsUri jsUri = mockJsUri(false); // optimized FeatureResource extRes = mockResource(true, RESOURCE_URL_DEB, RESOURCE_URL_OPT); FeatureResource intRes = mockResource(false, RESOURCE_CONTENT_DEB, RESOURCE_CONTENT_OPT); FeatureBundle bundle = mockBundle(Lists.newArrayList(extRes, intRes)); Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle); assertEquals( "document.write('<script src=\"" + RESOURCE_URL_OPT + "\"></script>');\n" + RESOURCE_CONTENT_OPT + ";\n", getContent(actual)); }
@Test public void testCompile() throws Exception { JsResponse actual = compiler.compile(null, ImmutableList.of(JsContent.fromText(COMPILE_CONTENT, "js")), null); assertEquals(COMPILE_CONTENT, actual.toJsString()); assertEquals(0, actual.getErrors().size()); }
@SuppressWarnings("unchecked") private DefaultJsCompiler mockDefaultJsCompiler(JsResponse res, Iterable<JsContent> content) { DefaultJsCompiler result = createMock(DefaultJsCompiler.class); expect(result.getJsContent(isA(JsUri.class), isA(FeatureBundle.class))) .andReturn(content).anyTimes(); expect(result.compile(isA(JsUri.class), isA(Iterable.class), isA(String.class))) .andReturn(res).anyTimes(); replay(result); return result; }
@Test public void testGetJsContentWithDeb() throws Exception { JsUri jsUri = mockJsUri(true); // debug FeatureResource extRes = mockResource(true, RESOURCE_URL_DEB, RESOURCE_URL_OPT); FeatureResource intRes = mockResource(false, RESOURCE_CONTENT_DEB, RESOURCE_CONTENT_OPT); FeatureBundle bundle = mockBundle(Lists.newArrayList(extRes, intRes)); Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle); assertEquals( "document.write('<script src=\"" + RESOURCE_URL_DEB + "\"></script>');\n" + RESOURCE_CONTENT_DEB + ";\n", getContent(actual)); }
@Test public void testCompile() throws Exception { JsResponse actual = compiler.compile(null, ImmutableList.of(JsContent.fromText(COMPILE_CONTENT, "js")), null); assertEquals(COMPILE_CONTENT, actual.toJsString()); assertEquals(0, actual.getErrors().size()); }
@Before public void setUp() throws Exception { compiler = new DefaultJsCompiler(); }
@Test public void testGetJsContentWithOpt() throws Exception { JsUri jsUri = mockJsUri(false); // optimized FeatureResource extRes = mockResource(true, RESOURCE_URL_DEB, RESOURCE_URL_OPT); FeatureResource intRes = mockResource(false, RESOURCE_CONTENT_DEB, RESOURCE_CONTENT_OPT); FeatureBundle bundle = mockBundle(Lists.newArrayList(extRes, intRes)); Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle); assertEquals( "document.write('<script src=\"" + RESOURCE_URL_OPT + "\"></script>');\n" + RESOURCE_CONTENT_OPT + ";\n", getContent(actual)); }
@Test public void testGetJsContentWithDeb() throws Exception { JsUri jsUri = mockJsUri(true); // debug FeatureResource extRes = mockResource(true, RESOURCE_URL_DEB, RESOURCE_URL_OPT); FeatureResource intRes = mockResource(false, RESOURCE_CONTENT_DEB, RESOURCE_CONTENT_OPT); FeatureBundle bundle = mockBundle(Lists.newArrayList(extRes, intRes)); Iterable<JsContent> actual = compiler.getJsContent(jsUri, bundle); assertEquals( "document.write('<script src=\"" + RESOURCE_URL_DEB + "\"></script>');\n" + RESOURCE_CONTENT_DEB + ";\n", getContent(actual)); }