package com.vaadin.tests.server.component.absolutelayout; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import org.junit.Test; import com.vaadin.server.Sizeable; import com.vaadin.server.Sizeable.Unit; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.Button; public class ComponentPositionTest { private static final String CSS = "top:7.0px;right:7.0%;bottom:7.0pc;left:7.0em;z-index:7;"; private static final String PARTIAL_CSS = "top:7.0px;left:7.0em;"; private static final Float CSS_VALUE = Float.valueOf(7); private static final Unit UNIT_UNSET = Sizeable.Unit.PIXELS; /** * Add component w/o giving positions, assert that everything is unset */ @Test public void testNoPosition() { AbsoluteLayout layout = new AbsoluteLayout(); Button b = new Button(); layout.addComponent(b); assertNull(layout.getPosition(b).getTopValue()); assertNull(layout.getPosition(b).getBottomValue()); assertNull(layout.getPosition(b).getLeftValue()); assertNull(layout.getPosition(b).getRightValue()); assertEquals(UNIT_UNSET, layout.getPosition(b).getTopUnits()); assertEquals(UNIT_UNSET, layout.getPosition(b).getBottomUnits()); assertEquals(UNIT_UNSET, layout.getPosition(b).getLeftUnits()); assertEquals(UNIT_UNSET, layout.getPosition(b).getRightUnits()); assertEquals(-1, layout.getPosition(b).getZIndex()); assertEquals("", layout.getPosition(b).getCSSString()); } /** * Add component, setting all attributes using CSS, assert getter agree */ @Test public void testFullCss() { AbsoluteLayout layout = new AbsoluteLayout(); Button b = new Button(); layout.addComponent(b, CSS); assertEquals(CSS_VALUE, layout.getPosition(b).getTopValue()); assertEquals(CSS_VALUE, layout.getPosition(b).getBottomValue()); assertEquals(CSS_VALUE, layout.getPosition(b).getLeftValue()); assertEquals(CSS_VALUE, layout.getPosition(b).getRightValue()); assertEquals(Sizeable.Unit.PIXELS, layout.getPosition(b).getTopUnits()); assertEquals(Sizeable.Unit.PICAS, layout.getPosition(b).getBottomUnits()); assertEquals(Sizeable.Unit.EM, layout.getPosition(b).getLeftUnits()); assertEquals(Sizeable.Unit.PERCENTAGE, layout.getPosition(b).getRightUnits()); assertEquals(7, layout.getPosition(b).getZIndex()); assertEquals(CSS, layout.getPosition(b).getCSSString()); } /** * Add component, setting some attributes using CSS, assert getters agree */ @Test public void testPartialCss() { AbsoluteLayout layout = new AbsoluteLayout(); Button b = new Button(); layout.addComponent(b, PARTIAL_CSS); assertEquals(CSS_VALUE, layout.getPosition(b).getTopValue()); assertNull(layout.getPosition(b).getBottomValue()); assertEquals(CSS_VALUE, layout.getPosition(b).getLeftValue()); assertNull(layout.getPosition(b).getRightValue()); assertEquals(Sizeable.Unit.PIXELS, layout.getPosition(b).getTopUnits()); assertEquals(UNIT_UNSET, layout.getPosition(b).getBottomUnits()); assertEquals(Sizeable.Unit.EM, layout.getPosition(b).getLeftUnits()); assertEquals(UNIT_UNSET, layout.getPosition(b).getRightUnits()); assertEquals(-1, layout.getPosition(b).getZIndex()); assertEquals(PARTIAL_CSS, layout.getPosition(b).getCSSString()); } /** * Add component setting all attributes using CSS, then reset using partial * CSS; assert getters agree and the appropriate attributes are unset. */ @Test public void testPartialCssReset() { AbsoluteLayout layout = new AbsoluteLayout(); Button b = new Button(); layout.addComponent(b, CSS); layout.getPosition(b).setCSSString(PARTIAL_CSS); assertEquals(CSS_VALUE, layout.getPosition(b).getTopValue()); assertNull(layout.getPosition(b).getBottomValue()); assertEquals(CSS_VALUE, layout.getPosition(b).getLeftValue()); assertNull(layout.getPosition(b).getRightValue()); assertEquals(Sizeable.Unit.PIXELS, layout.getPosition(b).getTopUnits()); assertEquals(UNIT_UNSET, layout.getPosition(b).getBottomUnits()); assertEquals(Sizeable.Unit.EM, layout.getPosition(b).getLeftUnits()); assertEquals(UNIT_UNSET, layout.getPosition(b).getRightUnits()); assertEquals(-1, layout.getPosition(b).getZIndex()); assertEquals(PARTIAL_CSS, layout.getPosition(b).getCSSString()); } /** * Add component, then set all position attributes with individual setters * for value and units; assert getters agree. */ @Test public void testSetPosition() { final Float SIZE = Float.valueOf(12); AbsoluteLayout layout = new AbsoluteLayout(); Button b = new Button(); layout.addComponent(b); layout.getPosition(b).setTopValue(SIZE); layout.getPosition(b).setRightValue(SIZE); layout.getPosition(b).setBottomValue(SIZE); layout.getPosition(b).setLeftValue(SIZE); layout.getPosition(b).setTopUnits(Sizeable.Unit.CM); layout.getPosition(b).setRightUnits(Sizeable.Unit.EX); layout.getPosition(b).setBottomUnits(Sizeable.Unit.INCH); layout.getPosition(b).setLeftUnits(Sizeable.Unit.MM); assertEquals(SIZE, layout.getPosition(b).getTopValue()); assertEquals(SIZE, layout.getPosition(b).getRightValue()); assertEquals(SIZE, layout.getPosition(b).getBottomValue()); assertEquals(SIZE, layout.getPosition(b).getLeftValue()); assertEquals(Sizeable.Unit.CM, layout.getPosition(b).getTopUnits()); assertEquals(Sizeable.Unit.EX, layout.getPosition(b).getRightUnits()); assertEquals(Sizeable.Unit.INCH, layout.getPosition(b).getBottomUnits()); assertEquals(Sizeable.Unit.MM, layout.getPosition(b).getLeftUnits()); } /** * Add component, then set all position attributes with combined setters for * value and units; assert getters agree. */ @Test public void testSetPosition2() { final Float SIZE = Float.valueOf(12); AbsoluteLayout layout = new AbsoluteLayout(); Button b = new Button(); layout.addComponent(b); layout.getPosition(b).setTop(SIZE, Sizeable.Unit.CM); layout.getPosition(b).setRight(SIZE, Sizeable.Unit.EX); layout.getPosition(b).setBottom(SIZE, Sizeable.Unit.INCH); layout.getPosition(b).setLeft(SIZE, Sizeable.Unit.MM); assertEquals(SIZE, layout.getPosition(b).getTopValue()); assertEquals(SIZE, layout.getPosition(b).getRightValue()); assertEquals(SIZE, layout.getPosition(b).getBottomValue()); assertEquals(SIZE, layout.getPosition(b).getLeftValue()); assertEquals(Sizeable.Unit.CM, layout.getPosition(b).getTopUnits()); assertEquals(Sizeable.Unit.EX, layout.getPosition(b).getRightUnits()); assertEquals(Sizeable.Unit.INCH, layout.getPosition(b).getBottomUnits()); assertEquals(Sizeable.Unit.MM, layout.getPosition(b).getLeftUnits()); } /** * Add component, set all attributes using CSS, unset some using method * calls, assert getters agree. */ @Test public void testUnsetPosition() { AbsoluteLayout layout = new AbsoluteLayout(); Button b = new Button(); layout.addComponent(b, CSS); layout.getPosition(b).setTopValue(null); layout.getPosition(b).setRightValue(null); layout.getPosition(b).setBottomValue(null); layout.getPosition(b).setLeftValue(null); layout.getPosition(b).setZIndex(-1); assertNull(layout.getPosition(b).getTopValue()); assertNull(layout.getPosition(b).getBottomValue()); assertNull(layout.getPosition(b).getLeftValue()); assertNull(layout.getPosition(b).getRightValue()); assertEquals("", layout.getPosition(b).getCSSString()); } }