@SuppressWarnings("deprecation") @Override public boolean containsAtLeast(final int n) { int values = n - _values.size(); if (values <= 0) return true; for (final RestrictedDatatype<?> rd : _ranges) { if (rd.containsAtLeast(n)) return true; values -= rd.size(); // FIXME This may crash. } return values <= 0; }
@SuppressWarnings("deprecation") @Override public boolean containsAtLeast(final int n) { int values = n - _values.size(); if (values <= 0) return true; for (final RestrictedDatatype<?> rd : _ranges) { if (rd.containsAtLeast(n)) return true; values -= rd.size(); // FIXME This may crash. } return values <= 0; }
@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 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)); }