blob: 4194954b6d2ccdff62be37a1717dbc653e5d5db3 [file] [log] [blame]
/*
* Copyright 2014 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.dev.js;
import com.google.gwt.core.ext.UnableToCompleteException;
import com.google.gwt.core.ext.linker.impl.NamedRange;
import com.google.gwt.dev.cfg.BindingProperty;
import com.google.gwt.dev.cfg.ConditionNone;
import com.google.gwt.dev.cfg.ConfigurationProperty;
import com.google.gwt.dev.jjs.impl.FullCompileTestBase;
import com.google.gwt.dev.util.DefaultTextOutput;
import com.google.gwt.dev.util.TextOutput;
import com.google.gwt.thirdparty.guava.common.collect.Maps;
import java.util.List;
import java.util.Map;
/**
* Tests for JsToStringGenerationVisitor.
*/
public class JsToStringGenerationVisitorTest extends FullCompileTestBase {
// Compilation Configuration Properties.
@Override
public void setUp() throws Exception {
// Compilation Configuration Properties.
BindingProperty stackMode = new BindingProperty("compiler.stackMode");
stackMode.addDefinedValue(new ConditionNone(), "STRIP");
setProperties(new BindingProperty[] {stackMode}, new String[] {"STRIP"},
new ConfigurationProperty[] {});
super.setUp();
}
public void testClassRangeMarking() throws UnableToCompleteException {
// Prepares the EntryPoint class to compile.
StringBuilder code = new StringBuilder();
code.append("package test;\n");
code.append("public class EntryPoint {\n");
code.append(" public interface SomeInterface {}\n");
code.append(" public static void onModuleLoad() {}\n");
code.append("}\n");
// Compiles EntryPoint to JS.
compileSnippetToJS(code.toString());
TextOutput text = new DefaultTextOutput(true);
JsSourceGenerationVisitor jsSourceGenerationVisitor = new JsSourceGenerationVisitor(text);
jsSourceGenerationVisitor.accept(jsProgram);
// Verifies that the EntryPoint class, SomeInterface interface and some other classes were
// delimited in the output by getClassRanges().
List<NamedRange> classRanges = jsSourceGenerationVisitor.getClassRanges();
Map<String, NamedRange> classRangesByName = Maps.newHashMap();
for (NamedRange classRange : classRanges) {
classRangesByName.put(classRange.getName(), classRange);
}
assertTrue(classRangesByName.containsKey("test.EntryPoint"));
assertTrue(classRangesByName.containsKey("test.EntryPoint$SomeInterface"));
assertTrue(classRangesByName.size() > 2);
NamedRange programClassRange = jsSourceGenerationVisitor.getProgramClassRange();
// Verifies there is a preamble before the program class range.
assertTrue(programClassRange.getStartPosition() > 0);
// Verifies there is an epilogue after the program class range.
assertTrue(programClassRange.getEndPosition() < text.getPosition());
}
@Override
protected void optimizeJava() {
}
}