/* * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.flex.compiler.internal.css; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsNot.not; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import org.apache.flex.compiler.css.ICSSDocument; import org.apache.flex.compiler.css.ICSSMediaQueryCondition; import org.apache.flex.compiler.css.ICSSPropertyValue; import org.apache.flex.compiler.css.ICSSRule; import org.junit.Test; import com.google.common.collect.ImmutableList; /** * JUnit tests for {@link CSSMediaQueryCondition}. * * @author Gordon Smith */ public class CSSMediaQueryConditionTests extends CSSBaseTests { private static final String EOL = "\n\t\t"; private String getPostfix() { return "{ " + EOL + " s|VBox { } " + EOL + "}"; } @Override public ICSSDocument getCSSNodeBase(String code) { return super.getCSSNodeBase(code + getPostfix()); } protected List<ICSSMediaQueryCondition> getCSSMediaQueryCondition(String code) { ImmutableList<ICSSRule> rules = getCSSNodeBase( code ).getRules(); assertThat("rules", rules, not( (ImmutableList<ICSSRule>) null) ); List<ICSSMediaQueryCondition> mediaQueryCondition = new ArrayList<ICSSMediaQueryCondition>(); for (ICSSRule icssRule : rules) { mediaQueryCondition.addAll( icssRule.getMediaQueryConditions() ); } assertThat("mediaQueryCondition", mediaQueryCondition, not( (List<ICSSMediaQueryCondition>) null) ); return mediaQueryCondition; } @Test public void CSSMediaQueryCondition_media1() { String code = "@media all"; List<ICSSMediaQueryCondition> mediaQueryConditions = getCSSMediaQueryCondition(code); assertThat("mediaQueryConditions.size()" , mediaQueryConditions.size(), is(1) ); ICSSMediaQueryCondition mediaQueryCondition = mediaQueryConditions.get(0); assertThat("mediaQueryCondition.getOperator()" , mediaQueryCondition.getOperator(), is( CSSModelTreeType.MEDIA_QUERY_CONDITION ) ); assertThat("mediaQueryCondition.getKey()" , mediaQueryCondition.getKey(), is( (String) null ) ); assertThat("mediaQueryCondition.getValue()" , mediaQueryCondition.getValue(), not( (ICSSPropertyValue) null ) ); assertTrue( mediaQueryCondition.getValue() instanceof CSSKeywordPropertyValue ); CSSKeywordPropertyValue property = (CSSKeywordPropertyValue) mediaQueryCondition.getValue(); assertThat("property.getKey()" , property.getKeyword(), is( "all" ) ); } @Test public void CSSMediaQueryCondition_media_combined() { String code = "@media (application-dpi: 240) and (os-platform: \"Android\") "; List<ICSSMediaQueryCondition> mediaQueryConditions = getCSSMediaQueryCondition(code); assertThat("mediaQueryConditions.size()" , mediaQueryConditions.size(), is(2) ); ICSSMediaQueryCondition mediaQueryCondition1 = mediaQueryConditions.get(0); assertThat("mediaQueryCondition1.getOperator()" , mediaQueryCondition1.getOperator(), is( CSSModelTreeType.MEDIA_QUERY_CONDITION ) ); assertThat("mediaQueryCondition1.getKey()" , mediaQueryCondition1.getKey(), is( (String) null ) ); assertThat("mediaQueryCondition1.getValue()" , mediaQueryCondition1.getValue(), not( (ICSSPropertyValue) null ) ); assertTrue( mediaQueryCondition1.getValue() instanceof CSSKeywordPropertyValue ); CSSKeywordPropertyValue property1 = (CSSKeywordPropertyValue) mediaQueryCondition1.getValue(); assertThat("property1.getOperator()" , property1.getOperator(), is( CSSModelTreeType.PROPERTY_VALUE ) ); assertThat("property1.getKey()" , property1.getKeyword(), is( "(application-dpi: 240)" ) ); ICSSMediaQueryCondition mediaQueryCondition2 = mediaQueryConditions.get(0); assertThat("mediaQueryCondition2.getOperator()" , mediaQueryCondition2.getOperator(), is( CSSModelTreeType.MEDIA_QUERY_CONDITION ) ); assertThat("mediaQueryCondition2.getKey()" , mediaQueryCondition2.getKey(), is( (String) null ) ); assertThat("mediaQueryCondition2.getValue()" , mediaQueryCondition2.getValue(), not( (ICSSPropertyValue) null ) ); assertTrue( mediaQueryCondition2.getValue() instanceof CSSKeywordPropertyValue ); CSSKeywordPropertyValue property2 = (CSSKeywordPropertyValue) mediaQueryCondition2.getValue(); assertThat("property2.getOperator()" , property2.getOperator(), is( CSSModelTreeType.PROPERTY_VALUE ) ); assertThat("property2.getKey()" , property2.getKeyword(), is( "(application-dpi: 240)" ) ); } }