/******************************************************************************* * Copyright (c) 2004, 2005 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 *******************************************************************************/ package org.eclipse.wst.css.core.tests.model; import junit.framework.TestCase; import org.eclipse.core.runtime.Preferences; import org.eclipse.wst.css.core.internal.CSSCorePlugin; import org.eclipse.wst.css.core.internal.preferences.CSSCorePreferenceNames; import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel; import org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleSheet; import org.eclipse.wst.css.core.tests.util.FileUtil; import org.w3c.dom.css.CSSPrimitiveValue; import org.w3c.dom.css.CSSValue; import org.w3c.dom.css.Counter; import org.w3c.dom.css.RGBColor; import org.w3c.dom.css.Rect; public class AbstractModelTest extends TestCase { protected ICSSModel fModel = null; protected void setUp() throws Exception { super.setUp(); Preferences prefs = CSSCorePlugin.getDefault().getPluginPreferences(); prefs.setValue(CSSCorePreferenceNames.CASE_IDENTIFIER, CSSCorePreferenceNames.LOWER); prefs.setValue(CSSCorePreferenceNames.CASE_PROPERTY_NAME, CSSCorePreferenceNames.LOWER); prefs.setValue(CSSCorePreferenceNames.CASE_PROPERTY_VALUE, CSSCorePreferenceNames.LOWER); fModel = FileUtil.createModel(); } protected void tearDown() throws Exception { if (fModel != null) { fModel.releaseFromEdit(); fModel = null; } super.tearDown(); } protected ICSSModel getModel() { return fModel; } protected ICSSStyleSheet getStyleSheet() { return (ICSSStyleSheet) fModel.getDocument(); } class PrimitiveNumber { short type; float value; PrimitiveNumber(short newType, float newValue) { type = newType; value = newValue; } } class PrimitiveString { short type; String value; PrimitiveString(short newType, String newValue) { type = newType; value = newValue; } } /* for int, float */ protected void checkPrimitiveNumber(CSSValue actual, PrimitiveNumber expected) { assertTrue(actual instanceof CSSPrimitiveValue); assertEquals(expected.type, ((CSSPrimitiveValue) actual).getPrimitiveType()); assertEquals(expected.value, ((CSSPrimitiveValue) actual).getFloatValue(expected.type), 0); } /* for string */ protected void checkPrimitiveString(CSSValue actual, PrimitiveString expected) { assertTrue(actual instanceof CSSPrimitiveValue); assertEquals(expected.type, ((CSSPrimitiveValue) actual).getPrimitiveType()); assertEquals(expected.value, ((CSSPrimitiveValue) actual).getStringValue()); } /* for counter */ protected void checkPrimitiveCounter(CSSValue actual, String identifier, String listStyle, String separator) { assertTrue(actual instanceof CSSPrimitiveValue); assertEquals(CSSPrimitiveValue.CSS_COUNTER, ((CSSPrimitiveValue) actual).getPrimitiveType()); Counter counter = ((CSSPrimitiveValue) actual).getCounterValue(); assertEquals(identifier, counter.getIdentifier()); assertEquals(listStyle, counter.getListStyle()); assertEquals(separator, counter.getSeparator()); } /* for rect */ protected void checkPrimitiveRect(CSSValue actual, Object[] expectedArray) { assertTrue(actual instanceof CSSPrimitiveValue); assertEquals(CSSPrimitiveValue.CSS_RECT, ((CSSPrimitiveValue) actual).getPrimitiveType()); Rect rect = ((CSSPrimitiveValue) actual).getRectValue(); CSSPrimitiveValue value; Object expected; value = rect.getTop(); expected = expectedArray[0]; if (expected instanceof PrimitiveNumber) { checkPrimitiveNumber(value, (PrimitiveNumber) expected); } else { checkPrimitiveString(value, (PrimitiveString) expected); } value = rect.getRight(); expected = expectedArray[1]; if (expected instanceof PrimitiveNumber) { checkPrimitiveNumber(value, (PrimitiveNumber) expected); } else { checkPrimitiveString(value, (PrimitiveString) expected); } value = rect.getBottom(); expected = expectedArray[2]; if (expected instanceof PrimitiveNumber) { checkPrimitiveNumber(value, (PrimitiveNumber) expected); } else { checkPrimitiveString(value, (PrimitiveString) expected); } value = rect.getLeft(); expected = expectedArray[3]; if (expected instanceof PrimitiveNumber) { checkPrimitiveNumber(value, (PrimitiveNumber) expected); } else { checkPrimitiveString(value, (PrimitiveString) expected); } } /* for rgb */ protected void checkPrimitiveRgb(CSSValue actual, Object[] expectedArray) { assertTrue(actual instanceof CSSPrimitiveValue); assertEquals(CSSPrimitiveValue.CSS_RGBCOLOR, ((CSSPrimitiveValue) actual).getPrimitiveType()); RGBColor color = ((CSSPrimitiveValue) actual).getRGBColorValue(); CSSPrimitiveValue value; Object expected; value = color.getRed(); expected = expectedArray[0]; if (expected instanceof PrimitiveNumber) { checkPrimitiveNumber(value, (PrimitiveNumber) expected); } else { checkPrimitiveString(value, (PrimitiveString) expected); } value = color.getGreen(); expected = expectedArray[1]; if (expected instanceof PrimitiveNumber) { checkPrimitiveNumber(value, (PrimitiveNumber) expected); } else { checkPrimitiveString(value, (PrimitiveString) expected); } value = color.getBlue(); expected = expectedArray[2]; if (expected instanceof PrimitiveNumber) { checkPrimitiveNumber(value, (PrimitiveNumber) expected); } else { checkPrimitiveString(value, (PrimitiveString) expected); } } }