/*
* Copyright (C) 2010 Brockmann Consult GmbH (info@brockmann-consult.de)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option)
* any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see http://www.gnu.org/licenses/
*/
package com.bc.ceres.binding;
import junit.framework.TestCase;
public class ValueRangeTest extends TestCase {
public void testParseFailures() {
try {
ValueRange.parseValueRange(null);
fail();
} catch (NullPointerException e) {
} catch (IllegalArgumentException e) {
fail();
}
try {
ValueRange.parseValueRange("");
fail();
} catch (IllegalArgumentException e) {
}
try {
ValueRange.parseValueRange("10,20");
fail();
} catch (IllegalArgumentException e) {
}
}
public void testParse() throws ConversionException {
ValueRange valueRange = ValueRange.parseValueRange("[10,20)");
assertEquals(10.0, valueRange.getMin(), 1e-10);
assertEquals(true, valueRange.hasMin());
assertEquals(true, valueRange.isMinIncluded());
assertEquals(20.0, valueRange.getMax(), 1e-10);
assertEquals(true, valueRange.hasMax());
assertEquals(false, valueRange.isMaxIncluded());
valueRange = ValueRange.parseValueRange("(-10,20]");
assertEquals(-10.0, valueRange.getMin(), 1e-10);
assertEquals(false, valueRange.isMinIncluded());
assertEquals(20.0, valueRange.getMax(), 1e-10);
assertEquals(true, valueRange.isMaxIncluded());
assertEquals(true, valueRange.hasMin());
assertEquals(true, valueRange.hasMax());
valueRange = ValueRange.parseValueRange("(*, 20]");
assertEquals(Double.NEGATIVE_INFINITY, valueRange.getMin(), 1e-10);
assertEquals(false, valueRange.hasMin());
assertEquals(false, valueRange.isMinIncluded());
assertEquals(20.0, valueRange.getMax(), 1e-10);
assertEquals(true, valueRange.hasMax());
assertEquals(true, valueRange.isMaxIncluded());
valueRange = ValueRange.parseValueRange("[-10,*]");
assertEquals(-10.0, valueRange.getMin(), 1e-10);
assertEquals(true, valueRange.isMinIncluded());
assertEquals(Double.POSITIVE_INFINITY, valueRange.getMax(), 1e-10);
assertEquals(false, valueRange.hasMax());
assertEquals(true, valueRange.isMaxIncluded());
assertEquals(true, valueRange.hasMin());
}
public void testContains() {
ValueRange valueRange = new ValueRange(-1.5, 3.2, true, false);
assertEquals(false, valueRange.contains(-1.6));
assertEquals(true, valueRange.contains(-1.5));
assertEquals(true, valueRange.contains(-1.4));
assertEquals(true, valueRange.contains(3.1));
assertEquals(false, valueRange.contains(3.2));
assertEquals(false, valueRange.contains(3.3));
valueRange = new ValueRange(-1.5, 3.2, false, true);
assertEquals(false, valueRange.contains(-1.6));
assertEquals(false, valueRange.contains(-1.5));
assertEquals(true, valueRange.contains(-1.4));
assertEquals(true, valueRange.contains(3.1));
assertEquals(true, valueRange.contains(3.2));
assertEquals(false, valueRange.contains(3.3));
valueRange = new ValueRange(Double.NEGATIVE_INFINITY, 3.2, false, true);
assertEquals(true, valueRange.contains(-1.6));
assertEquals(true, valueRange.contains(-1.5));
assertEquals(true, valueRange.contains(-1.4));
assertEquals(true, valueRange.contains(3.1));
assertEquals(true, valueRange.contains(3.2));
assertEquals(false, valueRange.contains(3.3));
valueRange = new ValueRange(-1.5, Double.POSITIVE_INFINITY, false, true);
assertEquals(false, valueRange.contains(-1.6));
assertEquals(false, valueRange.contains(-1.5));
assertEquals(true, valueRange.contains(-1.4));
assertEquals(true, valueRange.contains(3.1));
assertEquals(true, valueRange.contains(3.2));
assertEquals(true, valueRange.contains(3.3));
}
}