blob: 6e3e3645dcb4c64bde77e8852997ae38c1ea5036 [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.resources.converter;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.resources.css.ast.CssDef;
import com.google.gwt.resources.css.ast.CssEval;
import com.google.gwt.resources.css.ast.CssUrl;
import junit.framework.TestCase;
import java.util.Map;
/**
* Test for {@link DefCollectorVisitor}.
*/
public class DefCollectorVisitorTest extends TestCase {
private CssEval cssEval;
private CssDef cssDef;
private CssUrl cssUrl;
private TreeLogger treeLogger;
@Override
protected void setUp() throws Exception {
cssEval = mock(CssEval.class);
cssDef = mock(CssDef.class);
cssUrl = mock(CssUrl.class);
treeLogger = mock(TreeLogger.class);
}
public void testVisit_CssEval_KeyInMapping() {
// given
when(cssEval.getKey()).thenReturn("eval");
// when
DefCollectorVisitor defCollectorVisitor = new DefCollectorVisitor(false, treeLogger);
defCollectorVisitor.visit(cssEval, null);
Map<String, String> mapping = defCollectorVisitor.getDefMapping();
// then
assertTrue(mapping.containsKey("eval"));
assertEquals("EVAL", mapping.get("eval"));
}
public void testVisit_CssDef_KeyInMapping() {
// given
when(cssDef.getKey()).thenReturn("def");
// when
DefCollectorVisitor defCollectorVisitor = new DefCollectorVisitor(false, treeLogger);
defCollectorVisitor.visit(cssDef, null);
Map<String, String> mapping = defCollectorVisitor.getDefMapping();
// then
assertTrue(mapping.containsKey("def"));
assertEquals("DEF", mapping.get("def"));
}
public void testVisit_CssUrl_KeyInMapping() {
// given
when(cssUrl.getKey()).thenReturn("url");
// when
DefCollectorVisitor defCollectorVisitor = new DefCollectorVisitor(false, treeLogger);
defCollectorVisitor.visit(cssUrl, null);
Map<String, String> mapping = defCollectorVisitor.getDefMapping();
// then
assertTrue(mapping.containsKey("url"));
assertEquals("URL", mapping.get("url"));
}
public void testVisit_ConstantInCamelCase_UpperCaseKeyInMapping() {
// given
when(cssDef.getKey()).thenReturn("myConstantName");
// when
DefCollectorVisitor defCollectorVisitor = new DefCollectorVisitor(false, treeLogger);
defCollectorVisitor.visit(cssDef, null);
// then
Map<String, String> mapping = defCollectorVisitor.getDefMapping();
// then
assertTrue(mapping.containsKey("myConstantName"));
assertEquals("MY_CONSTANT_NAME", mapping.get("myConstantName"));
}
public void testVisit_ConstantInUpperCase_UpperCaseKeyInMapping() {
// given
when(cssDef.getKey()).thenReturn("MY_UPPERCASE_CONSTANT");
// when
DefCollectorVisitor defCollectorVisitor = new DefCollectorVisitor(false, treeLogger);
defCollectorVisitor.visit(cssDef, null);
Map<String, String> mapping = defCollectorVisitor.getDefMapping();
// then
assertTrue(mapping.containsKey("MY_UPPERCASE_CONSTANT"));
assertEquals("MY_UPPERCASE_CONSTANT", mapping.get("MY_UPPERCASE_CONSTANT"));
}
public void testVisit_ConstantWithInvalidCharacter_InvalidCharacterReplaced() {
// given
when(cssDef.getKey()).thenReturn("my-invalid~constant");
// when
DefCollectorVisitor defCollectorVisitor = new DefCollectorVisitor(false, treeLogger);
defCollectorVisitor.visit(cssDef, null);
Map<String, String> mapping = defCollectorVisitor.getDefMapping();
// then
assertTrue(mapping.containsKey("my-invalid~constant"));
assertEquals("MY_INVALID_CONSTANT", mapping.get("my-invalid~constant"));
}
public void testVisit_TwoConstantsWithSameNameAfterConversionAndNotLenient_ThrowException() {
// given
when(cssDef.getKey()).thenReturn("myConstant");
when(cssUrl.getKey()).thenReturn("my_constant");
// when
DefCollectorVisitor defCollectorVisitor = new DefCollectorVisitor(false, treeLogger);
defCollectorVisitor.visit(cssDef, null);
try {
defCollectorVisitor.visit(cssUrl, null);
} catch (Css2GssConversionException expected) {
}
}
public void testVisit_TwoConstantsWithSameNameAfterConversionAndLenient_SecondConstantRenamed() {
// given
when(cssDef.getKey()).thenReturn("myConstant");
when(cssUrl.getKey()).thenReturn("my_constant");
// when
DefCollectorVisitor defCollectorVisitor = new DefCollectorVisitor(true, treeLogger);
defCollectorVisitor.visit(cssDef, null);
defCollectorVisitor.visit(cssUrl, null);
Map<String, String> mapping = defCollectorVisitor.getDefMapping();
// then
assertTrue(mapping.containsKey("myConstant"));
assertTrue(mapping.containsKey("my_constant"));
assertEquals("MY_CONSTANT", mapping.get("myConstant"));
assertEquals("MY_CONSTANT__RENAMED__0", mapping.get("my_constant"));
}
public void testVisit_ThreeConstantsWithSameNameAfterConversionAndLenient_SecondAndThirdConstantRenamed() {
// given
when(cssDef.getKey()).thenReturn("myConstant");
when(cssUrl.getKey()).thenReturn("my_constant");
when(cssEval.getKey()).thenReturn("my-constant");
// when
DefCollectorVisitor defCollectorVisitor = new DefCollectorVisitor(true, treeLogger);
defCollectorVisitor.visit(cssDef, null);
defCollectorVisitor.visit(cssUrl, null);
defCollectorVisitor.visit(cssEval, null);
Map<String, String> mapping = defCollectorVisitor.getDefMapping();
// then
assertTrue(mapping.containsKey("myConstant"));
assertTrue(mapping.containsKey("my_constant"));
assertTrue(mapping.containsKey("my-constant"));
assertEquals("MY_CONSTANT", mapping.get("myConstant"));
assertEquals("MY_CONSTANT__RENAMED__0", mapping.get("my_constant"));
assertEquals("MY_CONSTANT__RENAMED__1", mapping.get("my-constant"));
}
}