Package com.google.gwt.resources.client.gss

Source Code of com.google.gwt.resources.client.gss.GssResourceTest

/*
* 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.client.gss;

import com.google.gwt.resources.client.gss.TestResources.ClassNameAnnotation;
import com.google.gwt.resources.client.gss.TestResources.EmptyClass;
import com.google.gwt.resources.client.gss.TestResources.NonStandardAtRules;
import com.google.gwt.resources.client.gss.TestResources.NonStandardFunctions;
import com.google.gwt.resources.client.gss.TestResources.RuntimeConditional;
import com.google.gwt.resources.client.gss.TestResources.SomeGssResource;
import com.google.gwt.resources.client.gss.TestResources.WithConstant;

/**
* Contains various full-stack tests of the CssResource system with GSS.
*/
public class GssResourceTest extends RenamingClassNameTest {
  @Override
  public String getModuleName() {
    return "com.google.gwt.resources.GssResourceTest";
  }

  @Override
  public void testClassesRenaming() {
    ClassNameAnnotation classNameAnnotation = res().classNameAnnotation();
    String renamedClass = classNameAnnotation.renamedClass();
    String nonRenamedClass = classNameAnnotation.nonRenamedClass();

    assertTrue(renamedClass.matches(OBFUSCATION_PATTERN));
    assertTrue(nonRenamedClass.matches(OBFUSCATION_PATTERN));
  }

  public void testMixin() {
    String text = res().mixin().getText();

    assertTrue(text.contains("{width:120px;height:100px}"));
  }

  public void testAdd() {
    String text = res().add().getText();

    assertTrue(text.contains("{width:220px}"));
  }

  public void testEval() {
    String text = res().eval().getText();

    assertTrue(text.contains("{color:#fff;background-color:#f00;width:30px}"));
  }

  public void testSprite() {
    String text = res().sprite().getText();

    String expected = "{height:64px;width:64px;overflow:hidden;background:url(" + res()
        .someImageResource().getSafeUri().asString() + ") -0px -0px  no-repeat}";

    assertTrue(text.contains(expected));
  }

  public void testResourceUrl() {
    String text = res().resourceUrl().getText();

    String expected = "{cursor:url(" + res().someDataResource().getSafeUri().asString() + ");"
        + "background-image:url(" + res().someImageResource().getSafeUri().asString() + ");"
        + "cursor:url(" + res().someDataResource().getSafeUri().asString() + ");"
        + "background-image:url(" + res().someImageResource().getSafeUri().asString() + ")}";
    assertTrue(text.contains(expected));
  }

  /**
   * Test that empty class definitions are removed from the resulting css.
   */
  public void testEmptyClass() {
    EmptyClass emptyClass = res().emptyClass();

    assertEquals("", emptyClass.getText());
  }

  public void testConstant() {
    WithConstant withConstant = res().withConstant();

    assertEquals("15px", withConstant.constantOne());

    String expectedCss = "." + withConstant.classOne() + "{padding:" + withConstant.constantOne()
        + "}";
    assertEquals(expectedCss, withConstant.getText());
  }

  public void testClassNameAnnotation() {
    ClassNameAnnotation css = res().classNameAnnotation();

    String expectedCss = "." + css.renamedClass() + "{color:black}." + css.nonRenamedClass()
        + "{color:white}";
    assertEquals(expectedCss, css.getText());
  }

  public void testConstants() {
    assertEquals("15px", res().cssWithConstant().constantOne());
    assertEquals(5, res().cssWithConstant().constantTwo());
    assertEquals("black", res().cssWithConstant().CONSTANT_THREE());

    assertNotSame("white", res().cssWithConstant().conflictConstantClass());

    assertEquals(15, res().cssWithConstant().overrideConstantInt());
    assertNotSame("15px", res().cssWithConstant().overrideConstantIntClass());
  }

  public void testNotStrict() {
    SomeGssResource notStrict = res().notstrict();

    String expectedCss = "." + notStrict.someClass() + "{color:black}.otherNotStrictClass{" +
        "color:white}";

    assertEquals(expectedCss, notStrict.getText());
  }

  public void testRuntimeConditional() {
    RuntimeConditional runtimeConditional = res().runtimeConditional();
    String foo = runtimeConditional.foo();

    BooleanEval.FIRST = true;
    BooleanEval.SECOND = true;
    BooleanEval.THIRD = true;

    assertEquals(runtimeExpectedCss("purple", "10px", foo), runtimeConditional.getText());

    BooleanEval.FIRST = false;
    BooleanEval.SECOND = true;
    BooleanEval.THIRD = true;

    assertEquals(runtimeExpectedCss("black", "10px", foo), runtimeConditional.getText());

    BooleanEval.FIRST = false;
    BooleanEval.SECOND = true;
    BooleanEval.THIRD = false;

    assertEquals(runtimeExpectedCss("khaki", "10px", foo), runtimeConditional.getText());

    BooleanEval.FIRST = false;
    BooleanEval.SECOND = false;

    assertEquals(runtimeExpectedCss("gray", "10px", foo), runtimeConditional.getText());
  }

  public void testNonStandardAtRules() {
    NonStandardAtRules nonStandardAtRules = res().nonStandardAtRules();

    String css = nonStandardAtRules.getText();
    assertTrue(css.contains("@extenal"));
    assertTrue(css.contains("@-moz-document"));
    assertTrue(css.contains("@supports"));
  }

  public void testNonStandardFunctions() {
    NonStandardFunctions nonStandardFunctions = res().nonStandardFunctions();

    String css = nonStandardFunctions.getText();
    assertTrue(css.contains("expression("));
    assertTrue(css.contains("progid:DXImageTransform.Microsoft.gradient("));
  }

  private String runtimeExpectedCss(String color, String padding, String foo) {
    String s = "." + foo + "{width:100%}" + "." + foo + "{color:" + color + "}";

    if (padding != null) {
      s += "." + foo + "{padding:" + padding + "}";
    }

    s += "." + foo + "{margin:100px}";

    return s;
  }
}
TOP

Related Classes of com.google.gwt.resources.client.gss.GssResourceTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.