1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
/*
* Copyright 2008 The Closure Compiler Authors.
*
* 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.javascript.jscomp.deps;
import com.google.common.collect.ImmutableList;
import com.google.javascript.jscomp.deps.DependencyInfo;
import com.google.javascript.jscomp.deps.DepsFileParser;
import com.google.javascript.jscomp.ErrorManager;
import com.google.javascript.jscomp.PrintStreamErrorManager;
import junit.framework.TestCase;
import java.util.Collections;
import java.util.List;
/**
* Tests for {@link DepsFileParser}.
*
* @author agrieve@google.com (Andrew Grieve)
*/
public class DepsFileParserTest extends TestCase {
private DepsFileParser parser;
private ErrorManager errorManager;
private static final String SRC_PATH = "/path/1.js";
private final List<String> EMPTY = Collections.emptyList();
@Override
public void setUp() {
errorManager = new PrintStreamErrorManager(System.err);
parser = new DepsFileParser(errorManager);
parser.setShortcutMode(true);
}
/**
* Tests:
* -Parsing of comments,
* -Parsing of different styles of quotes,
* -Parsing of empty arrays,
* -Parsing of non-empty arrays,
* -Correct recording of what was parsed.
*/
public void testGoodParse() {
final String CONTENTS = "/*"
+ "goog.addDependency('no1', [], []);*//*\n"
+ "goog.addDependency('no2', [ ], [ ]);\n"
+ "*/goog.addDependency('yes1', [], []);\n"
+ "/* blah */goog.addDependency(\"yes2\", [], [])/* blah*/\n"
+ "goog.addDependency('yes3', ['a','b'], ['c']); // goog.addDependency('no3', [], []);\n"
+ "// goog.addDependency('no4', [], []);\n"
+ "goog.addDependency(\"yes4\", [], [ \"a\",'b' , 'c' ]); //no new line at EOF";
List<DependencyInfo> result = parser.parseFile(SRC_PATH, CONTENTS);
ImmutableList<DependencyInfo> EXPECTED = ImmutableList.<DependencyInfo>of(
new SimpleDependencyInfo("yes1", SRC_PATH, EMPTY, EMPTY),
new SimpleDependencyInfo("yes2", SRC_PATH, EMPTY, EMPTY),
new SimpleDependencyInfo(
"yes3", SRC_PATH, ImmutableList.of("a", "b"), ImmutableList.of("c")),
new SimpleDependencyInfo(
"yes4", SRC_PATH, EMPTY, ImmutableList.of("a", "b", "c"))
);
assertEquals(EXPECTED, result);
assertEquals(0, errorManager.getErrorCount());
assertEquals(0, errorManager.getWarningCount());
}
public void testTooFewArgs() {
parser.parseFile(SRC_PATH, "goog.addDependency('a', []);");
assertEquals(1, errorManager.getErrorCount());
assertEquals(0, errorManager.getWarningCount());
}
public void testTooManyArgs() {
parser.parseFile(SRC_PATH, "goog.addDependency('a', [], [], []);");
assertEquals(1, errorManager.getErrorCount());
assertEquals(0, errorManager.getWarningCount());
}
public void testShortcutMode() {
List<DependencyInfo> result = parser.parseFile(SRC_PATH,
"goog.addDependency('yes1', [], []); \n" +
"foo();\n" +
"goog.addDependency('no1', [], []);");
ImmutableList<DependencyInfo> EXPECTED = ImmutableList.<DependencyInfo>of(
new SimpleDependencyInfo("yes1", SRC_PATH, EMPTY, EMPTY));
assertEquals(EXPECTED, result);
}
public void testNoShortcutMode() {
parser.setShortcutMode(false);
List<DependencyInfo> result = parser.parseFile(SRC_PATH,
"goog.addDependency('yes1', [], []); \n" +
"foo();\n" +
"goog.addDependency('yes2', [], []);");
ImmutableList<DependencyInfo> EXPECTED = ImmutableList.<DependencyInfo>of(
new SimpleDependencyInfo("yes1", SRC_PATH, EMPTY, EMPTY),
new SimpleDependencyInfo("yes2", SRC_PATH, EMPTY, EMPTY));
assertEquals(EXPECTED, result);
}
}
|