package geniusweb.model; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import java.math.BigDecimal; import org.junit.Test; import geniusweb.domaineditor.model.NumberValueSetModel; import geniusweb.issuevalue.NumberValueSet; import geniusweb.issuevalue.ValueSet; import tudelft.utilities.immutablelist.Range; import tudelft.utilities.logging.Reporter; import tudelft.utilities.mvc.model.NumberModel; public class NumberValueSetModelTest { private final Reporter log = mock(Reporter.class); @Test public void smoke() { new NumberValueSetModel(log); } @Test public void testSomeGoodValues() { NumberValueSetModel model = new NumberValueSetModel(log); assertEquals(11, model.getList().getSize()); // default is 0...10 model.getLow().setValue(new BigDecimal("2")); assertEquals(9, model.getList().getSize()); // 2..10 model.getHigh().setValue(new BigDecimal("3")); assertEquals(2, model.getList().getSize()); // 2..3 model.getStep().setValue(new BigDecimal("0.1")); assertEquals(11, model.getList().getSize()); // 2.0, 2.1, ...,3.0 } @Test(expected = IllegalStateException.class) public void testIllegal1() { new NumberValueSetModel(new NumberModel(BigDecimal.TEN, log), new NumberModel(BigDecimal.ONE, log), new NumberModel(BigDecimal.ONE, log), log); } @Test public void testIllegal12() { NumberValueSetModel n = new NumberValueSetModel(log); // change low above high must log problem n.getLow().setValue(BigDecimal.valueOf(20)); verify(log, times(1)).log(any(), any()); } @Test(expected = IllegalStateException.class) public void testIllegal3() { NumberValueSetModel model = new NumberValueSetModel( new NumberModel(BigDecimal.TEN, log), new NumberModel(BigDecimal.ONE, log), new NumberModel(BigDecimal.ONE, log), log); model.getLow().setValue(BigDecimal.valueOf(20)); } @Test public void testLowIncrease() { NumberValueSetModel set = new NumberValueSetModel( new NumberModel(BigDecimal.ZERO, log), new NumberModel(BigDecimal.TEN, log), new NumberModel(BigDecimal.ONE, log), log); ValueSet v = new NumberValueSet( new Range(BigDecimal.ONE, BigDecimal.TEN, BigDecimal.ONE)); set.setCurrentValue(v); } @Test public void testHighDecrease() { NumberValueSetModel set = new NumberValueSetModel( new NumberModel(BigDecimal.ZERO, log), new NumberModel(BigDecimal.TEN, log), new NumberModel(BigDecimal.ONE, log), log); ValueSet v = new NumberValueSet( new Range(BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.ONE)); set.setCurrentValue(v); } @Test public void testIncreaseBoth() { NumberValueSetModel set = new NumberValueSetModel( new NumberModel(BigDecimal.ZERO, log), new NumberModel(BigDecimal.ONE, log), new NumberModel(BigDecimal.ONE, log), log); ValueSet v = new NumberValueSet( new Range(BigDecimal.ONE, BigDecimal.TEN, BigDecimal.ONE)); set.setCurrentValue(v); } @Test public void testIncreaseBothMuch() { NumberValueSetModel set = new NumberValueSetModel( new NumberModel(BigDecimal.ZERO, log), new NumberModel(BigDecimal.ONE, log), new NumberModel(BigDecimal.ONE, log), log); ValueSet v = new NumberValueSet(new Range(new BigDecimal("20"), new BigDecimal("80"), BigDecimal.ONE)); set.setCurrentValue(v); } @Test public void testDecreaseBoth() { NumberValueSetModel set = new NumberValueSetModel( new NumberModel(BigDecimal.ONE, log), new NumberModel(BigDecimal.TEN, log), new NumberModel(BigDecimal.ONE, log), log); ValueSet v = new NumberValueSet( new Range(BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.ONE)); set.setCurrentValue(v); } @Test public void testDecreaseBothMuch() { NumberValueSetModel set = new NumberValueSetModel( new NumberModel(new BigDecimal("20"), log), new NumberModel(new BigDecimal("80"), log), new NumberModel(BigDecimal.ONE, log), log); ValueSet v = new NumberValueSet( new Range(BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.ONE)); set.setCurrentValue(v); } }