/*
* Copyright 2011 JBoss Inc
*
* Licensed 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.
*/
package org.drools.chance.degree.interval;
import junit.framework.TestCase;
import org.drools.chance.degree.Degree;
import org.drools.chance.degree.simple.SimpleDegree;
import org.junit.Test;
public class IntervalDegreeTest extends TestCase {
@Test
public void testAsSimpleDegree() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
SimpleDegree s = x.asSimpleDegree();
assertEquals(0.35, s.getValue());
}
@Test
public void testGetValue() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
assertEquals(0.35,x.getValue());
}
@Test
public void testToBoolean() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
assertTrue(x.toBoolean());
IntervalDegree y = new IntervalDegree(0,0.62);
assertFalse(y.toBoolean());
}
@Test
public void testToString() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
assertNotNull(x.toString());
assertTrue(x.toString().length() > 0);
assertTrue(x.toString().contains("0.35"));
assertTrue(x.toString().contains("0.8"));
}
@Test
public void testGetPhi() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
assertEquals(1-0.8,x.getPhi());
}
@Test
public void testGetTau() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
assertEquals(0.35,x.getTau());
}
@Test
public void testGetLow() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
assertEquals(0.35,x.getLow());
}
@Test
public void testGetUpp() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
assertEquals(0.8,x.getUpp());
}
@Test
public void testHashCode() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
IntervalDegree y = new IntervalDegree(0.22,0.4);
IntervalDegree z = new IntervalDegree(0.35,0.8);
assertEquals(x.hashCode(),x.hashCode());
assertEquals(x.hashCode(),z.hashCode());
assertNotSame(x.hashCode(),y.hashCode());
}
@Test
public void testEquals() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
IntervalDegree y = new IntervalDegree(0.22,0.4);
IntervalDegree z = new IntervalDegree(0.35,0.8);
assertTrue(x.equals(x));
assertFalse(x.equals(null));
assertTrue(x.equals(z));
assertFalse(x.equals(y));
}
@Test
public void testGetConfidence() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.7);
assertEquals(0.65,x.getConfidence());
}
@Test
public void testAsIntervalDegree() throws Exception {
IntervalDegree x = new IntervalDegree(0.35,0.8);
IntervalDegree y = x.asIntervalDegree();
assertEquals(x,y);
}
@Test
public void testIsComparable() throws Exception {
IntervalDegree x = new IntervalDegree(0.0,0.4);
IntervalDegree y = new IntervalDegree(0.6,0.9);
IntervalDegree z = new IntervalDegree(0.3, 0.75);
assertTrue(x.isComparableTo(y));
assertTrue(y.isComparableTo(x));
assertFalse(x.isComparableTo(z));
assertFalse(z.isComparableTo(x));
assertFalse(y.isComparableTo(z));
assertFalse(z.isComparableTo(y));
}
@Test
public void testCompareTo() throws Exception {
IntervalDegree x = new IntervalDegree(0.0,0.4);
IntervalDegree y = new IntervalDegree(0.6,0.9);
IntervalDegree z = new IntervalDegree(0.3, 0.75);
IntervalDegree w = new IntervalDegree(0.0,0.4);
assertEquals(-1,x.compareTo(y));
assertEquals(1,y.compareTo(x));
assertEquals(0,x.compareTo(x));
assertEquals(0,x.compareTo(w));
assertEquals(-99,x.compareTo(z));
assertEquals(-99,z.compareTo(x));
assertEquals(-99,y.compareTo(z));
assertEquals(-99,z.compareTo(y));
}
@Test
public void testFalse() throws Exception {
assertEquals(new IntervalDegree(0.2,0.4).False(),new IntervalDegree(0,0));
}
@Test
public void testTrue() throws Exception {
assertEquals(new IntervalDegree(0.2,0.4).True(),new IntervalDegree(1,1));
}
@Test
public void testUnknown() throws Exception {
assertEquals(new IntervalDegree(0.2,0.4).Unknown(),new IntervalDegree(0,1));
}
@Test
public void testSum() throws Exception {
IntervalDegree x = new IntervalDegree(0.0,0.4);
IntervalDegree y = new IntervalDegree(0.6,0.9);
IntervalDegree z = new IntervalDegree(0.6, 0.75);
IntervalDegree n = new IntervalDegree(0.0, 0.0);
Degree s = x.sum(y);
assertTrue(s instanceof IntervalDegree);
assertEquals(new IntervalDegree(0.6,1),s);
Degree t = y.sum(z);
assertTrue(t instanceof IntervalDegree);
assertEquals(new IntervalDegree(1,1),t);
assertEquals(new IntervalDegree(0.0,0.4),x);
assertEquals(new IntervalDegree(0.6,0.9),y);
assertEquals(new IntervalDegree(0.6,0.75),z);
Degree m = y.sum(n);
assertTrue(m instanceof IntervalDegree);
assertEquals(m,y);
}
@Test
public void testMul() throws Exception {
IntervalDegree x = new IntervalDegree(0.0,0.4);
IntervalDegree y = new IntervalDegree(0.6,0.9);
IntervalDegree z = new IntervalDegree(0.6, 0.8);
IntervalDegree n = new IntervalDegree(1.0, 1.0);
Degree s = x.mul(y);
assertTrue(s instanceof IntervalDegree);
assertEquals(new IntervalDegree(0.0,0.36),s);
Degree t = y.mul(z);
assertTrue(t instanceof IntervalDegree);
assertEquals(new IntervalDegree(0.36,0.72),t);
assertEquals(new IntervalDegree(0.0,0.4),x);
assertEquals(new IntervalDegree(0.6,0.9),y);
assertEquals(new IntervalDegree(0.6,0.8),z);
Degree m = y.mul(n);
assertTrue(m instanceof IntervalDegree);
assertEquals(m,y);
}
@Test
public void testSub() throws Exception {
IntervalDegree x = new IntervalDegree(0.0,0.4);
IntervalDegree y = new IntervalDegree(0.6,0.9);
IntervalDegree z = new IntervalDegree(0.6, 0.8);
IntervalDegree n = new IntervalDegree(0.0, 0.0);
Degree s = y.sub(x);
assertTrue(s instanceof IntervalDegree);
assertEquals(new IntervalDegree(0.2,0.9),s);
Degree t = z.sub(y);
assertTrue(t instanceof IntervalDegree);
assertEquals(new IntervalDegree(0.0,0.2),t);
assertEquals(new IntervalDegree(0.0,0.4),x);
assertEquals(new IntervalDegree(0.6,0.9),y);
assertEquals(new IntervalDegree(0.6,0.8),z);
Degree m = y.sub(n);
assertTrue(m instanceof IntervalDegree);
assertEquals(m,y);
}
@Test
public void testDiv() throws Exception {
IntervalDegree x = new IntervalDegree(0.0,0.4);
IntervalDegree y = new IntervalDegree(0.6,0.9);
IntervalDegree z = new IntervalDegree(0.6, 0.8);
IntervalDegree n = new IntervalDegree(1.0, 1.0);
IntervalDegree v = new IntervalDegree(0.0, 0.0);
Degree s = x.div(y);
assertTrue(s instanceof IntervalDegree);
assertEquals(new IntervalDegree(0,0.4/0.6),s);
Degree t = z.div(y);
assertTrue(t instanceof IntervalDegree);
assertEquals(new IntervalDegree(2.0/3.0,1.0),t);
assertEquals(new IntervalDegree(0.0,0.4),x);
assertEquals(new IntervalDegree(0.6,0.9),y);
assertEquals(new IntervalDegree(0.6,0.8),z);
Degree m = y.div(n);
assertTrue(m instanceof IntervalDegree);
assertEquals(m,y);
Degree u = y.div(v);
assertTrue(u instanceof IntervalDegree);
assertEquals(u,n);
}
@Test
public void testMax() throws Exception {
IntervalDegree x = new IntervalDegree(0.0,0.4);
IntervalDegree y = new IntervalDegree(0.6,0.9);
IntervalDegree z = new IntervalDegree(0.6, 0.8);
IntervalDegree n = new IntervalDegree(0.0, 0.0);
Degree s = x.max(y);
assertTrue(s instanceof IntervalDegree);
assertEquals(new IntervalDegree(0.6,0.9),s);
Degree t = z.max(y);
assertTrue(t instanceof IntervalDegree);
assertEquals(new IntervalDegree(0.6,0.9),t);
assertEquals(new IntervalDegree(0.0,0.4),x);
assertEquals(new IntervalDegree(0.6,0.9),y);
assertEquals(new IntervalDegree(0.6,0.8),z);
Degree m = y.max(n);
assertTrue(m instanceof IntervalDegree);
assertEquals(m,y);
}
@Test
public void testMin() throws Exception {
IntervalDegree x = new IntervalDegree(0.0,0.4);
IntervalDegree y = new IntervalDegree(0.6,0.9);
IntervalDegree z = new IntervalDegree(0.6, 0.8);
IntervalDegree n = new IntervalDegree(1.0, 1.0);
Degree s = x.min(y);
assertTrue(s instanceof IntervalDegree);
assertEquals(new IntervalDegree(0.0,0.4),s);
Degree t = z.min(y);
assertTrue(t instanceof IntervalDegree);
assertEquals(new IntervalDegree(0.6,0.8),t);
assertEquals(new IntervalDegree(0.0,0.4),x);
assertEquals(new IntervalDegree(0.6,0.9),y);
assertEquals(new IntervalDegree(0.6,0.8),z);
Degree m = y.min(n);
assertTrue(m instanceof IntervalDegree);
assertEquals(m,y);
}
}