package com.vaadin.tests.server.component.slider; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import org.junit.Test; import com.vaadin.ui.Slider; import com.vaadin.ui.Slider.ValueOutOfBoundsException; public class SliderTest { @Test public void minCannotBeLargerThanMax() { Slider slider = new Slider(); slider.setMax(100); slider.setMin(101); assertThat(slider.getMin(), is(101.0)); assertThat(slider.getMax(), is(101.0)); } @Test public void maxCannotBeSmallerThanMin() { Slider slider = new Slider(); slider.setMin(50); slider.setMax(10); assertThat(slider.getMax(), is(10.0)); assertThat(slider.getMin(), is(10.0)); } @Test public void valueOutOfBoundsExceptionMessageContainsBounds() { Slider slider = new Slider(); try { slider.setValue(-1.0); } catch (Slider.ValueOutOfBoundsException e) { assertThat(e.getMessage(), containsString( "Value -1.0 is out of bounds: [0.0, 100.0]")); } } @Test public void valueIsSet() { Slider slider = new Slider(); slider.setValue(5.0); assertThat(slider.getValue(), is(5.0)); } @Test(expected = ValueOutOfBoundsException.class) public void valueCannotBeOutOfBounds() { Slider s = new Slider(0, 10); s.setValue(20.0); } @Test public void valueCanHaveLargePrecision() { Slider slider = new Slider(); slider.setResolution(20); slider.setValue(99.01234567891234567890123456789); assertThat(slider.getValue(), is(99.01234567891234567890123456789)); } @Test public void doublesCanBeUsedAsLimits() { Slider slider = new Slider(1.5, 2.5, 1); assertThat(slider.getMin(), is(1.5)); assertThat(slider.getValue(), is(1.5)); assertThat(slider.getMax(), is(2.5)); } @Test public void valuesGreaterThanIntMaxValueCanBeUsed() { double minValue = (double) Integer.MAX_VALUE + 1; Slider s = new Slider(minValue, minValue + 1, 0); assertThat(s.getValue(), is(minValue)); } @Test public void negativeValuesCanBeUsed() { Slider slider = new Slider(-0.7, 1.0, 0); slider.setValue(-0.4); assertThat(slider.getValue(), is(-0.0)); } @Test public void boundariesAreRounded() { Slider slider = new Slider(1.5, 2.5, 0); slider.setValue(1.0); assertThat(slider.getValue(), is(1.0)); assertThat(slider.getMin(), is(1.0)); assertThat(slider.getMax(), is(2.0)); } @Test public void valueWithSmallerPrecisionCanBeUsed() { Slider slider = new Slider(0, 100, 10); slider.setValue(1.2); assertThat(slider.getValue(), is(1.2)); } @Test public void valueWithLargerPrecisionCanBeUsed() { Slider slider = new Slider(0, 100, 2); slider.setValue(1.2345); assertThat(slider.getValue(), is(1.23)); } @Test(expected = NullPointerException.class) public void setValue_nullValue_throwNPE() { Slider slider = new Slider(); slider.setValue(null); } }