/******************************************************************************* * Copyright (c) 2009, 2014 IBM Corporation and others. All rights reserved. This * program and the accompanying materials are made available under the terms of * the Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Lars Vogel <Lars.Vogel@gmail.com> - Bug 430468 *******************************************************************************/ package org.eclipse.e4.ui.tests.css.core.parser; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.eclipse.e4.ui.css.core.engine.CSSEngine; import org.eclipse.e4.ui.css.core.impl.dom.Measure; import org.eclipse.e4.ui.tests.css.core.util.ParserTestUtil; import org.junit.Before; import org.junit.Test; import org.w3c.dom.css.CSSPrimitiveValue; import org.w3c.dom.css.CSSValue; import org.w3c.dom.css.CSSValueList; public class ValueTest { private CSSEngine engine; @Before public void setUp() { engine = ParserTestUtil.createEngine(); } @Test public void testFloat() throws Exception { CSSValue value = engine.parsePropertyValue("2.0"); assertTrue(value instanceof Measure); assertEquals( "2.0", value.getCssText() ); } @Test public void testInt() throws Exception { CSSValue value = engine.parsePropertyValue("34"); assertTrue(value instanceof Measure); assertEquals(((Measure) value).getPrimitiveType(), CSSPrimitiveValue.CSS_NUMBER); assertEquals( "34", value.getCssText() ); } @Test public void testIdentifier() throws Exception { CSSValue value = engine.parsePropertyValue("SomeWord"); assertTrue(value instanceof Measure); assertEquals(((Measure) value).getPrimitiveType(), CSSPrimitiveValue.CSS_IDENT); assertEquals( "SomeWord", value.getCssText() ); } @Test public void testPercent() throws Exception { CSSValue value = engine.parsePropertyValue("30%"); assertTrue(value instanceof Measure); assertEquals(((Measure) value).getPrimitiveType(), CSSPrimitiveValue.CSS_PERCENTAGE); assertEquals( "30.0%", value.getCssText() ); } @Test public void testPixel() throws Exception { CSSValue value = engine.parsePropertyValue("26px"); assertTrue(value instanceof Measure); assertEquals(((Measure) value).getPrimitiveType(), CSSPrimitiveValue.CSS_PX); assertEquals( "26.0px", value.getCssText() ); } @Test public void testInch() throws Exception { CSSValue value = engine.parsePropertyValue("88in"); assertTrue(value instanceof Measure); assertEquals(((Measure) value).getPrimitiveType(), CSSPrimitiveValue.CSS_IN); assertEquals( "88.0in", value.getCssText() ); } @Test public void testEm() throws Exception { CSSValue value = engine.parsePropertyValue("75em"); assertTrue(value instanceof Measure); assertEquals(((Measure) value).getPrimitiveType(), CSSPrimitiveValue.CSS_EMS); assertEquals( "75.0em", value.getCssText() ); } @Test public void testURI() throws Exception { CSSValue value = engine.parsePropertyValue("url(./somepath/picture.gif)"); assertTrue(value instanceof Measure); assertEquals(((Measure) value).getPrimitiveType(), CSSPrimitiveValue.CSS_URI); assertEquals("url(./somepath/picture.gif)", value.getCssText()); } @Test public void testList() throws Exception { CSSValue value = engine.parsePropertyValue("34 34 34"); assertTrue(value instanceof CSSValueList); assertEquals(((CSSValueList) value).getCssValueType(), CSSValue.CSS_VALUE_LIST); assertEquals(3, ((CSSValueList) value).getLength()); assertTrue(((CSSValueList) value).item(0) instanceof Measure); assertEquals(CSSPrimitiveValue.CSS_NUMBER, ((Measure) ((CSSValueList) value).item(0)).getPrimitiveType()); assertTrue(((CSSValueList) value).item(1) instanceof Measure); assertEquals(CSSPrimitiveValue.CSS_NUMBER, ((Measure) ((CSSValueList) value).item(1)).getPrimitiveType()); assertTrue(((CSSValueList) value).item(2) instanceof Measure); assertEquals(CSSPrimitiveValue.CSS_NUMBER, ((Measure) ((CSSValueList) value).item(2)).getPrimitiveType()); assertEquals("34 34 34", value.getCssText()); } @Test public void testCommaSeparatedList() throws Exception { CSSValue value = engine.parsePropertyValue("34, 34, 34"); assertTrue(value instanceof CSSValueList); CSSValueList list = (CSSValueList) value; assertEquals(list.getCssValueType(), CSSValue.CSS_VALUE_LIST); assertEquals(5, list.getLength()); // FIXME: see comments in bug 278139 for (int i = 0; i < list.getLength(); i++) { assertTrue(list.item(i) instanceof Measure); } assertEquals(CSSPrimitiveValue.CSS_NUMBER, ((Measure) list.item(0)).getPrimitiveType()); assertEquals(CSSPrimitiveValue.CSS_CUSTOM, ((Measure) list.item(1)).getPrimitiveType()); assertEquals(CSSPrimitiveValue.CSS_NUMBER, ((Measure) list.item(2)).getPrimitiveType()); assertEquals(CSSPrimitiveValue.CSS_CUSTOM, ((Measure) list.item(3)).getPrimitiveType()); assertEquals(CSSPrimitiveValue.CSS_NUMBER, ((Measure) list.item(4)).getPrimitiveType()); // use String#matches() as there may be white-space differences assertTrue(value.getCssText().matches("34\\s*,\\s*34\\s*,\\s*34")); } }