| /* |
| * Copyright 2015 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.client; |
| |
| |
| /** |
| * Contains various full-stack tests of the CssResource system with gss enabled. |
| */ |
| public class CSSResourceWithGSSTest extends CSSResourceTest { |
| |
| @Override |
| public String getModuleName() { |
| return "com.google.gwt.resources.ResourcesGssTest"; |
| } |
| |
| @Override |
| public void testCss() { |
| FullTestCss css = Resources.INSTANCE.css(); |
| String text = css.getText(); |
| |
| // Check the sprite |
| assertTrue(text.contains("height:16px")); |
| assertTrue(text.contains("width:16px")); |
| |
| // Check the value() expansion |
| assertTrue(text.contains("offset-left:\"guard\" 16px!important")); |
| assertTrue(text.contains("offset:16px 16px")); |
| |
| // Make sure renaming works |
| assertFalse("replacement".equals(css.replacement())); |
| assertTrue(text.contains("." + css.replacement())); |
| assertTrue(text.contains("." + css.replacement() + ":after")); |
| assertTrue(text.contains("." + css.replacementNotJavaIdent())); |
| |
| // Make sure renaming for multi-class selectors (.foo.bar) works |
| assertFalse("multiClassA".equals(css.multiClassA())); |
| assertFalse("multiClassB".equals(css.multiClassB())); |
| assertTrue(text.contains("." + css.multiClassA() + "." + css.multiClassB())); |
| |
| // Check static if evaluation |
| assertTrue(text.contains("static:passed")); |
| assertFalse(text.contains("FAIL")); |
| |
| // Check runtime if evaluation |
| assertTrue(text.contains("runtime:passed")); |
| |
| // Check interestingly-named idents |
| assertTrue(text.contains("-some-wacky-extension")); |
| assertTrue(text.contains("another-extension:-bar")); |
| assertTrue(text.contains("-unescaped-hyphen:-is-better")); |
| assertTrue(text.contains("with_underscore:_is_better")); |
| |
| assertTrue(text.contains("ns:tag")); |
| assertTrue(text.contains("ns:tag:pseudo")); |
| assertTrue(text.contains("ns:tag::double-pseudo")); |
| assertTrue(text.contains("ns:tag::-webkit-scrollbar")); |
| |
| // Check escaped string values |
| // TODO(dankurka) investigate why latest gss fails here: |
| // assertTrue(text.contains("Hello\\\\\\000022 world")); |
| |
| // Check values |
| assertFalse(text.contains("0.0;")); |
| assertFalse(text.contains("0.0px;")); |
| assertFalse(text.contains("0px;")); |
| assertTrue(text.contains("background-color:#fff")); |
| assertTrue(text.contains("content:\"bar\"")); |
| |
| // Check data URL expansion |
| assertTrue(text.contains("backgroundTopLevel:url(" |
| + Resources.INSTANCE.dataMethod().getSafeUri().asString() + ")")); |
| assertTrue(text.contains("backgroundNested:url(" |
| + Resources.INSTANCE.nested().dataMethod().getSafeUri().asString() + ")")); |
| assertTrue(text.contains("backgroundCustom:url(" |
| + Resources.INSTANCE.customDataMethod().getSafeUri().asString() + ")")); |
| assertTrue(text.contains("backgroundImage:url(" |
| + Resources.INSTANCE.spriteMethod().getSafeUri().asString() + ")")); |
| assertTrue(text.contains("backgroundImageNested:url(" |
| + Resources.INSTANCE.nested().spriteMethod().getSafeUri().asString() + ")")); |
| assertTrue(text.contains("backgroundImageCustom:url(" |
| + Resources.INSTANCE.customSpriteMethod().getSafeUri().asString() + ")")); |
| |
| // Check @eval expansion |
| assertTrue(text.contains(red())); |
| |
| // Check @def substitution |
| assertTrue(text.contains("50px")); |
| // Check @def substitution into function arguments |
| // Note that GWT transforms rgb(R, G, B) into #rrggbb form. |
| assertTrue(text.contains("-moz-linear-gradient(left,#007f00,#00007f 50%)")); |
| assertTrue(text.contains("-webkit-linear-gradient(left,#007f00,#00007f 50%)")); |
| assertTrue(text.contains("linear-gradient(to right,#007f00,#00007f 50%)")); |
| |
| // Check merging semantics |
| assertTrue(text.indexOf("merge:merge") != -1); |
| assertTrue(text.indexOf("merge:merge") < text.indexOf("." |
| + css.mayNotCombine())); |
| assertTrue(text.indexOf("may-not-combine") < text.indexOf("prevent:true")); |
| assertTrue(text.indexOf("prevent:true") < text.indexOf("prevent-merge:true")); |
| assertTrue(text.indexOf("prevent:true") < text.indexOf("." |
| + css.mayNotCombine2())); |
| |
| // Check commonly-used CSS3 constructs |
| assertTrue(text.contains("background-color:rgba(0,0,0,0.5)")); |
| |
| // Check external references |
| assertEquals("externalA", css.externalA()); |
| assertTrue(text.contains(".externalA ." + css.replacement())); |
| assertTrue(text.contains(".externalB")); |
| assertTrue(text.contains(".externalC")); |
| |
| // Test font-face contents |
| assertTrue(text.contains("url(Foo.otf) format(\"opentype\")")); |
| } |
| } |