| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /* $Id$ */ |
| |
| package org.apache.fop.traits; |
| |
| import org.junit.Test; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| import static org.junit.Assert.fail; |
| |
| /** |
| * Tests the {@link MinOptMax} class. |
| */ |
| public class MinOptMaxTestCase { |
| |
| /** |
| * Tests that the constant <code>MinOptMax.ZERO</code> is really zero. |
| */ |
| @Test |
| public void testZero() { |
| assertEquals(MinOptMax.getInstance(0), MinOptMax.ZERO); |
| } |
| |
| @Test |
| public void testNewStiffMinOptMax() { |
| MinOptMax value = MinOptMax.getInstance(1); |
| assertTrue(value.isStiff()); |
| assertEquals(1, value.getMin()); |
| assertEquals(1, value.getOpt()); |
| assertEquals(1, value.getMax()); |
| } |
| |
| @Test |
| public void testNewMinOptMax() { |
| MinOptMax value = MinOptMax.getInstance(1, 2, 3); |
| assertTrue(value.isElastic()); |
| assertEquals(1, value.getMin()); |
| assertEquals(2, value.getOpt()); |
| assertEquals(3, value.getMax()); |
| } |
| |
| /** |
| * Test that it is possible to create stiff instances with the normal factory method. |
| */ |
| @Test |
| public void testNewMinOptMaxStiff() { |
| MinOptMax value = MinOptMax.getInstance(1, 1, 1); |
| assertTrue(value.isStiff()); |
| assertEquals(1, value.getMin()); |
| assertEquals(1, value.getOpt()); |
| assertEquals(1, value.getMax()); |
| } |
| |
| @Test |
| public void testNewMinOptMaxMinGreaterOpt() { |
| try { |
| MinOptMax.getInstance(1, 0, 2); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| assertEquals("min (1) > opt (0)", e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void testNewMinOptMaxMaxSmallerOpt() { |
| try { |
| MinOptMax.getInstance(0, 1, 0); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| assertEquals("max (0) < opt (1)", e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void testShrinkablility() { |
| assertEquals(0, MinOptMax.getInstance(1).getShrink()); |
| assertEquals(1, MinOptMax.getInstance(1, 2, 2).getShrink()); |
| assertEquals(2, MinOptMax.getInstance(1, 3, 3).getShrink()); |
| } |
| |
| @Test |
| public void testStrechablilty() { |
| assertEquals(0, MinOptMax.getInstance(1).getStretch()); |
| assertEquals(1, MinOptMax.getInstance(1, 1, 2).getStretch()); |
| assertEquals(2, MinOptMax.getInstance(1, 1, 3).getStretch()); |
| } |
| |
| @Test |
| public void testPlus() { |
| assertEquals(MinOptMax.ZERO, |
| MinOptMax.ZERO.plus(MinOptMax.ZERO)); |
| assertEquals(MinOptMax.getInstance(1, 2, 3), |
| MinOptMax.ZERO.plus(MinOptMax.getInstance(1, 2, 3))); |
| assertEquals(MinOptMax.getInstance(2, 4, 6), |
| MinOptMax.getInstance(1, 2, 3).plus(MinOptMax.getInstance(1, 2, 3))); |
| assertEquals(MinOptMax.getInstance(4, 5, 6), MinOptMax.getInstance(1, 2, 3).plus(3)); |
| } |
| |
| @Test |
| public void testMinus() { |
| assertEquals(MinOptMax.ZERO, |
| MinOptMax.ZERO.minus(MinOptMax.ZERO)); |
| assertEquals(MinOptMax.getInstance(1, 2, 3), |
| MinOptMax.getInstance(1, 2, 3).plus(MinOptMax.ZERO)); |
| assertEquals(MinOptMax.getInstance(1, 2, 3), |
| MinOptMax.getInstance(2, 4, 6).minus(MinOptMax.getInstance(1, 2, 3))); |
| assertEquals(MinOptMax.getInstance(1, 2, 3), MinOptMax.getInstance(5, 6, 7).minus(4)); |
| } |
| |
| @Test |
| public void testMinusFail1() { |
| try { |
| MinOptMax.ZERO.minus(MinOptMax.getInstance(1, 2, 3)); |
| fail(); |
| } catch (ArithmeticException e) { |
| // Ok |
| } |
| } |
| |
| @Test |
| public void testMinusFail2() { |
| try { |
| MinOptMax.getInstance(1, 2, 3).minus(MinOptMax.getInstance(1, 3, 3)); |
| fail(); |
| } catch (ArithmeticException e) { |
| // Ok |
| } |
| } |
| |
| @Test |
| public void testMinusFail3() { |
| try { |
| MinOptMax.ZERO.minus(MinOptMax.getInstance(1, 1, 2)); |
| fail(); |
| } catch (ArithmeticException e) { |
| // Ok |
| } |
| } |
| |
| @Test |
| public void testMinusFail4() { |
| try { |
| MinOptMax.getInstance(1, 2, 3).minus(MinOptMax.getInstance(1, 1, 3)); |
| fail(); |
| } catch (ArithmeticException e) { |
| // Ok |
| } |
| } |
| |
| @Test |
| public void testMult() { |
| assertEquals(MinOptMax.ZERO, MinOptMax.ZERO.mult(0)); |
| assertEquals(MinOptMax.getInstance(1, 2, 3), MinOptMax.getInstance(1, 2, 3).mult(1)); |
| assertEquals(MinOptMax.getInstance(2, 4, 6), MinOptMax.getInstance(1, 2, 3).mult(2)); |
| } |
| |
| @Test |
| public void testMultFail() { |
| try { |
| MinOptMax.getInstance(1, 2, 3).mult(-1); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| assertEquals("factor < 0; was: -1", e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void testNonZero() { |
| assertFalse(MinOptMax.ZERO.isNonZero()); |
| assertTrue(MinOptMax.getInstance(1).isNonZero()); |
| assertTrue(MinOptMax.getInstance(1, 2, 3).isNonZero()); |
| } |
| |
| @Test |
| public void testExtendMinimum() { |
| assertEquals(MinOptMax.getInstance(1, 1, 1), |
| MinOptMax.ZERO.extendMinimum(1)); |
| assertEquals(MinOptMax.getInstance(1, 2, 3), |
| MinOptMax.getInstance(1, 2, 3).extendMinimum(1)); |
| assertEquals(MinOptMax.getInstance(2, 2, 3), |
| MinOptMax.getInstance(1, 2, 3).extendMinimum(2)); |
| assertEquals(MinOptMax.getInstance(3, 3, 3), |
| MinOptMax.getInstance(1, 2, 3).extendMinimum(3)); |
| assertEquals(MinOptMax.getInstance(4, 4, 4), |
| MinOptMax.getInstance(1, 2, 3).extendMinimum(4)); |
| } |
| |
| @Test |
| public void testEquals() { |
| MinOptMax number = MinOptMax.getInstance(1, 3, 5); |
| assertEquals(number, number); |
| assertEquals(number, MinOptMax.getInstance(1, 3, 5)); |
| assertFalse(number.equals(MinOptMax.getInstance(2, 3, 5))); |
| assertFalse(number.equals(MinOptMax.getInstance(1, 4, 5))); |
| assertFalse(number.equals(MinOptMax.getInstance(1, 3, 4))); |
| assertFalse(number.equals(null)); |
| assertFalse(number.equals(1)); |
| } |
| |
| @Test |
| public void testHashCode() { |
| MinOptMax number = MinOptMax.getInstance(1, 2, 3); |
| assertEquals(number.hashCode(), number.hashCode()); |
| assertEquals(number.hashCode(), MinOptMax.getInstance(1, 2, 3).hashCode()); |
| } |
| } |