blob: 87d88c08aa9a60de49aa94c337480f74c1d8dcac [file] [log] [blame]
/*****************************************************************************
* Copyright (c) 2004 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);
}
}
}