/******************************************************************************* * 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 * Thibault Le Ouay <thibaultleouay@gmail.com> - Bug 443094 *******************************************************************************/ package org.eclipse.e4.ui.tests.css.swt; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.function.Supplier; import org.eclipse.core.runtime.AssertionFailedException; import org.eclipse.e4.ui.css.core.engine.CSSEngine; import org.eclipse.e4.ui.css.swt.dom.WidgetElement; import org.eclipse.e4.ui.css.swt.dom.html.SWTHTMLElement; import org.eclipse.swt.widgets.Widget; import org.junit.Ignore; import org.junit.Test; public class CSSSWTWidgetTest extends CSSSWTTestCase { private final class WidgetElementWithSupplierReturningNull extends WidgetElement { private WidgetElementWithSupplierReturningNull(Widget widget, CSSEngine engine) { super(widget, engine); } @Override protected Supplier<String> internalGetAttribute(String attr) { return () -> null; } } private final class SWTHTMLElementWithAttributeTypeNull extends SWTHTMLElement { private SWTHTMLElementWithAttributeTypeNull(Widget widget, CSSEngine engine) { super(widget, engine); attributeType = null; } } private final class WidgetElementWithSwtStylesNull extends WidgetElement { private WidgetElementWithSwtStylesNull(Widget widget, CSSEngine engine) { super(widget, engine); swtStyles = null; } } @Ignore @Test public void testEngineKey() { Widget widget = createTestLabel("Label { font: Arial 12px; font-weight: bold }"); assertEquals(WidgetElement.getEngine(widget), engine); } @Test public void testIDKey() { final String id = "some.test.id"; Widget widget = createTestLabel("Label { font: Arial 12px; font-weight: bold }"); WidgetElement.setID(widget, id); assertEquals(WidgetElement.getID(widget), id); } @Test public void testCSSClassKey() { final String cssClass = "some.test.cssclassname"; Widget widget = createTestLabel("Label { font: Arial 12px; font-weight: bold }"); WidgetElement.setCSSClass(widget, cssClass); assertEquals(WidgetElement.getCSSClass(widget), cssClass); } @Test public void testHasAttribute() { Widget widget = createTestLabel("Label { }"); String propertySetToEmptyStringKey = "empty-property"; widget.setData(propertySetToEmptyStringKey, ""); assertTrue(engine.getElement(widget).hasAttribute(propertySetToEmptyStringKey)); assertFalse(engine.getElement(widget).hasAttribute("foo-bar-attribute")); assertNotNull(widget); } @Test public void testGetAttributeWithSwtStylesNull() { Widget widget = createTestLabel("Label { }"); engine.setElementProvider((element, engine) -> new WidgetElementWithSwtStylesNull((Widget) element, engine)); assertTrue(engine.getElement(widget).hasAttribute("style")); assertEquals("", engine.getElement(widget).getAttribute("style")); } @Test public void testGetAttributeWithAttributeTypeNull() { Widget widget = createTestLabel("Label { }"); engine.setElementProvider( (element, engine) -> new SWTHTMLElementWithAttributeTypeNull((Widget) element, engine)); assertTrue(engine.getElement(widget).hasAttribute("type")); assertEquals("", engine.getElement(widget).getAttribute("type")); } @Test(expected = AssertionFailedException.class) public void testGetAttributeWithAttributeSupplierReturningNull() { Widget widget = createTestLabel("Label { }"); engine.setElementProvider( (element, engine) -> new WidgetElementWithSupplierReturningNull((Widget) element, engine)); // throws exception engine.getElement(widget).getAttribute("style"); } }