@Override public boolean equals(Object o) { if (o == this) { return true; } else if (o instanceof PreferenceDomain) { PreferenceDomain od = (PreferenceDomain) o; EqualsBuilder eqb = new EqualsBuilder(); eqb.append(minimum, od.getMinimum()); eqb.append(maximum, od.getMaximum()); eqb.append(hasPrecision(), od.hasPrecision()); if (eqb.isEquals() && hasPrecision() && od.hasPrecision()) { eqb.append(precision, od.getPrecision()); } return eqb.isEquals(); } else { return false; } }
static RealVector makeValues(PreferenceDomain domain) { if (!domain.hasPrecision()) { throw new IllegalArgumentException("domain is not discrete"); } final double min = domain.getMinimum(); final double max = domain.getMaximum(); final double prec = domain.getPrecision(); final double nv = (max - min) / prec; int n = (int) nv; if (Math.abs(nv - n) > 1.0e-6) { n += 1; // one more to cover everything... } if (n == 0) { throw new IllegalArgumentException("range has no elements"); } double[] values = new double[n + 1]; for (int i = 0; i <= n; i++) { values[i] = min + (prec * i); } return new ArrayRealVector(values); }
@Test public void testParamBuilder() { PreferenceDomainBuilder bld = new PreferenceDomainBuilder(1, 5); PreferenceDomain dom = bld.build(); assertThat(dom.getMinimum(), equalTo(1.0)); assertThat(dom.getMaximum(), equalTo(5.0)); assertThat(dom.getPrecision(), equalTo(0.0)); }
@Test public void testSetMinMax() { PreferenceDomainBuilder bld = new PreferenceDomainBuilder(); bld.setMinimum(-1) .setMaximum(1); PreferenceDomain dom = bld.build(); assertThat(dom.getMinimum(), equalTo(-1.0)); assertThat(dom.getMaximum(), equalTo(1.0)); assertThat(dom.getPrecision(), equalTo(0.0)); }
@Test public void testSetAll() { PreferenceDomainBuilder bld = new PreferenceDomainBuilder(); bld.setMinimum(1.0) .setMaximum(5) .setPrecision(0.5); PreferenceDomain dom = bld.build(); assertThat(dom.getMinimum(), equalTo(1.0)); assertThat(dom.getMaximum(), equalTo(5.0)); assertThat(dom.getPrecision(), equalTo(0.5)); }
@Test public void testParseDiscrete() { PreferenceDomain d = PreferenceDomain.fromString("[1.0,5.0]/0.5"); assertThat(d.getMinimum(), closeTo(1.0, 1.0e-6)); assertThat(d.getMaximum(), closeTo(5.0, 1.0e-6)); assertTrue(d.hasPrecision()); assertThat(d.getPrecision(), equalTo(0.5)); }
@Test public void testParseInt() { PreferenceDomain d = PreferenceDomain.fromString("[ 1 , 5 ] / 1"); assertThat(d.getMinimum(), closeTo(1.0, 1.0e-6)); assertThat(d.getMaximum(), closeTo(5.0, 1.0e-6)); assertTrue(d.hasPrecision()); assertThat(d.getPrecision(), equalTo(1.0)); }
@Test public void testParseContinuous() { PreferenceDomain d = PreferenceDomain.fromString("[1.0,3.0]"); assertThat(d.getMinimum(), closeTo(1.0, 1.0e-6)); assertThat(d.getMaximum(), closeTo(3.0, 1.0e-6)); assertFalse(d.hasPrecision()); assertThat(d.getPrecision(), equalTo(0.0)); }
@Override public boolean equals(Object o) { if (o == this) { return true; } else if (o instanceof PreferenceDomain) { PreferenceDomain od = (PreferenceDomain) o; EqualsBuilder eqb = new EqualsBuilder(); eqb.append(minimum, od.getMinimum()); eqb.append(maximum, od.getMaximum()); eqb.append(hasPrecision(), od.hasPrecision()); if (eqb.isEquals() && hasPrecision() && od.hasPrecision()) { eqb.append(precision, od.getPrecision()); } return eqb.isEquals(); } else { return false; } }
static RealVector makeValues(PreferenceDomain domain) { if (!domain.hasPrecision()) { throw new IllegalArgumentException("domain is not discrete"); } final double min = domain.getMinimum(); final double max = domain.getMaximum(); final double prec = domain.getPrecision(); final double nv = (max - min) / prec; int n = (int) nv; if (Math.abs(nv - n) > 1.0e-6) { n += 1; // one more to cover everything... } if (n == 0) { throw new IllegalArgumentException("range has no elements"); } double[] values = new double[n + 1]; for (int i = 0; i <= n; i++) { values[i] = min + (prec * i); } return new ArrayRealVector(values); }