/*
* Copyright 2009 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.common.css.compiler.passes;
import static com.google.common.css.compiler.passes.UnsafeMergeRulesetNodes.DECLARATION_COMPARATOR;
import static com.google.common.css.compiler.passes.UnsafeMergeRulesetNodes.TO_STRING_COMPARATOR;
import static com.google.common.css.compiler.passes.UnsafeMergeRulesetNodes.TO_STRING_ITERABLE_COMPARATOR;
import com.google.common.collect.ImmutableList;
import com.google.common.css.compiler.ast.*;
import junit.framework.TestCase;
/**
* Unit tests for {@link UnsafeMergeRulesetNodes}.
*
*/
public class UnsafeMergeRulesetNodesTest extends TestCase {
/**
* Tests for {@link UnsafeMergeRulesetNodes#TO_STRING_COMPARATOR}.
*/
public void testToStringComparator() {
testEquals(TO_STRING_COMPARATOR.compare(
new CssSelectorNode("a"), new CssSelectorNode("a")));
testSmaller(TO_STRING_COMPARATOR.compare(
new CssSelectorNode("a"), new CssSelectorNode("b")));
CssSelectorNode n = new CssSelectorNode("a");
}
/**
* Tests for {@link UnsafeMergeRulesetNodes#TO_STRING_ITERABLE_COMPARATOR}.
*/
public void testToStringIterableComparator() {
testEquals(TO_STRING_ITERABLE_COMPARATOR.compare(
ImmutableList.of("a", "b"), ImmutableList.of("a", "b")));
testGreater(TO_STRING_ITERABLE_COMPARATOR.compare(
ImmutableList.of("b", "a"), ImmutableList.of("a", "b")));
testSmaller(TO_STRING_ITERABLE_COMPARATOR.compare(
ImmutableList.of("a"), ImmutableList.of("a", "b")));
}
/**
* Tests for {@link UnsafeMergeRulesetNodes#DECLARATION_COMPARATOR}.
*/
public void testDeclarationComparator() {
CssPropertyNode padding = new CssPropertyNode("padding");
CssPropertyNode paddingLeft = new CssPropertyNode("padding-left");
CssPropertyNode margin = new CssPropertyNode("margin");
CssPropertyNode marginLeft = new CssPropertyNode("margin-left");
CssValueNode px1 = new CssNumericNode("1", "px");
CssValueNode px2 = new CssNumericNode("2", "px");
CssPropertyValueNode v1 = new CssPropertyValueNode(ImmutableList.of(px1));
CssPropertyValueNode v2 = new CssPropertyValueNode(ImmutableList.of(px2));
CssPropertyValueNode v1s =
new CssPropertyValueNode(ImmutableList.of(px1, px1, px1, px1));
CssPropertyValueNode v2s =
new CssPropertyValueNode(ImmutableList.of(px2, px2, px2, px2));
CssDeclarationNode padding1 =
new CssDeclarationNode(padding.deepCopy(), v1s.deepCopy());
CssDeclarationNode padding2 =
new CssDeclarationNode(padding.deepCopy(), v2s.deepCopy());
CssDeclarationNode paddingLeft1 =
new CssDeclarationNode(paddingLeft.deepCopy(), v1.deepCopy());
CssDeclarationNode margin1 =
new CssDeclarationNode(margin.deepCopy(), v1s.deepCopy());
CssDeclarationNode marginLeft1 =
new CssDeclarationNode(marginLeft.deepCopy(), v1.deepCopy());
testEquals(DECLARATION_COMPARATOR.compare(
margin1, margin1.deepCopy()));
testSmaller(DECLARATION_COMPARATOR.compare(
margin1, marginLeft1));
testSmaller(DECLARATION_COMPARATOR.compare(
margin1, paddingLeft1));
testSmaller(DECLARATION_COMPARATOR.compare(
padding1, padding2));
testSmaller(DECLARATION_COMPARATOR.compare(
marginLeft1, padding2));
testGreater(DECLARATION_COMPARATOR.compare(
paddingLeft1, padding2));
}
private void testEquals(int i) {
assertEquals(0, i);
}
private void testSmaller(int i) {
assertTrue(i < 0);
}
private void testGreater(int i) {
assertTrue(i > 0);
}
}