/** * Test ascending integer value enumeration for a bound interval * * @throws InvalidConstrainingFacetException */ @Test public void integerEnumeration1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), -250); dr = dr.applyConstrainingFacet(MAX_INCLUSIVE.getName(), 350); final Iterator<Number> it = dr.valueIterator(); for (int i = -250; i <= 350; i++) assertEquals(0, OWLRealUtils.compare(i, it.next())); }
/** * Test ascending integer value enumeration for two discontinuous intervals * * @throws InvalidConstrainingFacetException */ @Test public void integerEnumeration2a() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), -250); dr = dr.applyConstrainingFacet(MAX_INCLUSIVE.getName(), 350); RestrictedDatatype<Number> neg = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); neg = neg.applyConstrainingFacet(MIN_INCLUSIVE.getName(), -5); neg = neg.applyConstrainingFacet(MAX_INCLUSIVE.getName(), -2); dr = dr.intersect(neg, true); final Iterator<Number> it = dr.valueIterator(); for (int i = -250; i <= 350; i++) { if ((i >= -5) && (i <= -2)) continue; assertEquals(0, OWLRealUtils.compare(i, it.next())); } }
/** * Same test as {@link #integerEnumeration2a()}, but with range constructed using union, not intersection * * @throws InvalidConstrainingFacetException */ @Test public void integerEnumeration2b() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), -250); dr = dr.applyConstrainingFacet(MAX_EXCLUSIVE.getName(), -5); RestrictedDatatype<Number> b = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); b = b.applyConstrainingFacet(MIN_EXCLUSIVE.getName(), -2); b = b.applyConstrainingFacet(MAX_INCLUSIVE.getName(), 350); dr = dr.union(b); final Iterator<Number> it = dr.valueIterator(); for (int i = -250; i <= 350; i++) { if ((i >= -5) && (i <= -2)) continue; assertEquals(0, OWLRealUtils.compare(i, it.next())); } }
@Test public void maxInclusiveFacetCon1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.applyConstrainingFacet(MAX_INCLUSIVE.getName(), decimal("3.5")); assertTrue(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertTrue(dr.contains(Long.MIN_VALUE)); assertTrue(dr.contains(0)); assertTrue(dr.contains(decimal("3.4999"))); assertTrue(dr.contains(decimal("3.5"))); assertFalse(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(Long.MAX_VALUE)); assertFalse(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void maxExclusiveFacetCon1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.applyConstrainingFacet(MAX_EXCLUSIVE.getName(), decimal("3.5")); assertTrue(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertTrue(dr.contains(Long.MIN_VALUE)); assertTrue(dr.contains(0)); assertTrue(dr.contains(decimal("3.4999"))); assertFalse(dr.contains(decimal("3.5"))); assertFalse(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(Long.MAX_VALUE)); assertFalse(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void minInclusiveFacetCon1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), decimal("3.5")); assertFalse(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertFalse(dr.contains(Long.MIN_VALUE)); assertFalse(dr.contains(0)); assertFalse(dr.contains(decimal("3.4999"))); assertTrue(dr.contains(decimal("3.5"))); assertTrue(dr.contains(decimal("3.5001"))); assertTrue(dr.contains(Long.MAX_VALUE)); assertTrue(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void minExclusiveFacetCon1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.applyConstrainingFacet(MIN_EXCLUSIVE.getName(), decimal("3.5")); assertFalse(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertFalse(dr.contains(Long.MIN_VALUE)); assertFalse(dr.contains(0)); assertFalse(dr.contains(decimal("3.4999"))); assertFalse(dr.contains(decimal("3.5"))); assertTrue(dr.contains(decimal("3.5001"))); assertTrue(dr.contains(Long.MAX_VALUE)); assertTrue(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void emptyIntersectionConCon1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr1 = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr1 = dr1.applyConstrainingFacet(MIN_INCLUSIVE.getName(), decimal("2.5")); dr1 = dr1.applyConstrainingFacet(MAX_INCLUSIVE.getName(), decimal("3.5")); RestrictedDatatype<Number> dr2 = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr2 = dr2.applyConstrainingFacet(MIN_INCLUSIVE.getName(), decimal("4.5")); dr2 = dr2.applyConstrainingFacet(MAX_INCLUSIVE.getName(), decimal("5.5")); final RestrictedDatatype<Number> dr = dr1.intersect(dr2, false); assertTrue(dr.isEmpty()); assertTrue(dr.isFinite()); assertTrue(dr.isEnumerable()); assertTrue(dr.containsAtLeast(0)); assertFalse(dr.containsAtLeast(1)); }
@Test public void maxInclusiveFacetInt1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); dr = dr.applyConstrainingFacet(MAX_INCLUSIVE.getName(), 3); assertFalse(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertTrue(dr.contains(Long.MIN_VALUE)); assertTrue(dr.contains(0)); assertTrue(dr.contains(2)); assertFalse(dr.contains(decimal("2.9999"))); assertTrue(dr.contains(3)); assertFalse(dr.contains(decimal("3.0001"))); assertFalse(dr.contains(4)); assertFalse(dr.contains(Long.MAX_VALUE)); assertFalse(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void maxExclusiveFacetInt1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); dr = dr.applyConstrainingFacet(MAX_EXCLUSIVE.getName(), 3); assertFalse(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertTrue(dr.contains(Long.MIN_VALUE)); assertTrue(dr.contains(0)); assertTrue(dr.contains(2)); assertFalse(dr.contains(decimal("2.9999"))); assertFalse(dr.contains(3)); assertFalse(dr.contains(decimal("3.0001"))); assertFalse(dr.contains(4)); assertFalse(dr.contains(Long.MAX_VALUE)); assertFalse(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void minExclusiveFacetInt1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); dr = dr.applyConstrainingFacet(MIN_EXCLUSIVE.getName(), 3); assertFalse(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertFalse(dr.contains(Long.MIN_VALUE)); assertFalse(dr.contains(0)); assertFalse(dr.contains(2)); assertFalse(dr.contains(decimal("2.9999"))); assertFalse(dr.contains(3)); assertFalse(dr.contains(decimal("3.0001"))); assertTrue(dr.contains(4)); assertTrue(dr.contains(Long.MAX_VALUE)); assertFalse(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void minInclusiveFacetInt1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), 3); assertFalse(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertFalse(dr.contains(Long.MIN_VALUE)); assertFalse(dr.contains(0)); assertFalse(dr.contains(2)); assertFalse(dr.contains(decimal("2.9999"))); assertTrue(dr.contains(3)); assertFalse(dr.contains(decimal("3.0001"))); assertTrue(dr.contains(4)); assertTrue(dr.contains(Long.MAX_VALUE)); assertFalse(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void minExclusiveFacetNoI1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.intersect(new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null), true); dr = dr.applyConstrainingFacet(MIN_EXCLUSIVE.getName(), decimal("3.5")); assertFalse(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertFalse(dr.contains(Long.MIN_VALUE)); assertFalse(dr.contains(0)); assertFalse(dr.contains(2)); assertFalse(dr.contains(decimal("3.4999"))); assertFalse(dr.contains(decimal("3.5"))); assertTrue(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(Long.MAX_VALUE)); assertTrue(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void maxInclusiveFacetNoI1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.intersect(new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null), true); dr = dr.applyConstrainingFacet(MAX_INCLUSIVE.getName(), decimal("3.5")); assertTrue(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertFalse(dr.contains(Long.MIN_VALUE)); assertFalse(dr.contains(0)); assertFalse(dr.contains(2)); assertTrue(dr.contains(decimal("3.4999"))); assertTrue(dr.contains(decimal("3.5"))); assertFalse(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(Long.MAX_VALUE)); assertFalse(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void minInclusiveFacetNoI1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.intersect(new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null), true); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), decimal("3.5")); assertFalse(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertFalse(dr.contains(Long.MIN_VALUE)); assertFalse(dr.contains(0)); assertFalse(dr.contains(2)); assertFalse(dr.contains(decimal("3.4999"))); assertTrue(dr.contains(decimal("3.5"))); assertTrue(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(Long.MAX_VALUE)); assertTrue(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void maxExclusiveFacetNoI1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.intersect(new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null), true); dr = dr.applyConstrainingFacet(MAX_EXCLUSIVE.getName(), decimal("3.5")); assertTrue(dr.contains(BigDecimal.valueOf(Long.MIN_VALUE).subtract(BigDecimal.valueOf(0.1)))); assertFalse(dr.contains(Long.MIN_VALUE)); assertFalse(dr.contains(0)); assertFalse(dr.contains(2)); assertTrue(dr.contains(decimal("3.4999"))); assertFalse(dr.contains(decimal("3.5"))); assertFalse(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(Long.MAX_VALUE)); assertFalse(dr.contains(BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.valueOf(0.1)))); }
@Test public void minMaxIncIncInt1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), 25); dr = dr.applyConstrainingFacet(MAX_INCLUSIVE.getName(), 35); assertFalse(dr.contains(24)); assertFalse(dr.contains(decimal("24.999"))); assertTrue(dr.contains(25)); assertFalse(dr.contains(decimal("25.001"))); assertTrue(dr.contains(30)); assertFalse(dr.contains(decimal("34.999"))); assertTrue(dr.contains(35)); assertFalse(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(36)); }
@Test public void minMaxIncIncCon1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), decimal("2.5")); dr = dr.applyConstrainingFacet(MAX_INCLUSIVE.getName(), decimal("3.5")); assertFalse(dr.contains(2)); assertFalse(dr.contains(decimal("2.4999"))); assertTrue(dr.contains(decimal("2.5"))); assertTrue(dr.contains(decimal("2.5001"))); assertTrue(dr.contains(3)); assertTrue(dr.contains(decimal("3.4999"))); assertTrue(dr.contains(decimal("3.5"))); assertFalse(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(4)); }
@Test public void minMaxIncIncNoI1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.intersect(new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), null, null), true); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), decimal("2.5")); dr = dr.applyConstrainingFacet(MAX_INCLUSIVE.getName(), decimal("3.5")); assertFalse(dr.contains(2)); assertFalse(dr.contains(decimal("2.4999"))); assertTrue(dr.contains(decimal("2.5"))); assertTrue(dr.contains(decimal("2.5001"))); assertFalse(dr.contains(3)); assertTrue(dr.contains(decimal("3.4999"))); assertTrue(dr.contains(decimal("3.5"))); assertFalse(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(4)); }
/** * Test that a continuous interval is empty if upper bound is below lower bound * * @throws InvalidConstrainingFacetException */ @Test public void emptyRangeCon1() throws InvalidConstrainingFacetException { RestrictedDatatype<Number> dr = new RestrictedRealDatatype(dt, IntegerInterval.allIntegers(), ContinuousRealInterval.allReals(), ContinuousRealInterval.allReals()); dr = dr.applyConstrainingFacet(MAX_INCLUSIVE.getName(), decimal("2.5")); dr = dr.applyConstrainingFacet(MIN_INCLUSIVE.getName(), decimal("3.5")); assertFalse(dr.contains(2)); assertFalse(dr.contains(decimal("2.4999"))); assertFalse(dr.contains(decimal("2.5"))); assertFalse(dr.contains(decimal("2.5001"))); assertFalse(dr.contains(3)); assertFalse(dr.contains(decimal("3.4999"))); assertFalse(dr.contains(decimal("3.5"))); assertFalse(dr.contains(decimal("3.5001"))); assertFalse(dr.contains(4)); assertTrue(dr.isEmpty()); assertTrue(dr.isFinite()); assertTrue(dr.isEnumerable()); assertTrue(dr.containsAtLeast(0)); assertFalse(dr.containsAtLeast(1)); }