/*
* 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.pmml.pmml_4_1.global;
import junit.framework.Assert;
import org.drools.common.EventFactHandle;
import org.drools.definition.type.FactType;
import org.drools.pmml.pmml_4_1.DroolsAbstractPMMLTest;
import org.drools.runtime.ClassObjectFilter;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Collection;
public class ConstrainedDataDictionaryTest extends DroolsAbstractPMMLTest {
private static final boolean VERBOSE = false;
private static final String source = "org/drools/pmml/pmml_4_1/test_constr_data_dic.xml";
private static final String packageName = "org.drools.pmml.pmml_4_1.test";
@Before
public void setUp() throws Exception {
setKSession( getModelSession( source, VERBOSE ) );
setKbase( getKSession().getKnowledgeBase() );
}
@After
public void tearDown() {
getKSession().dispose();
}
@Test
public void testContinuousDomainIntervals() throws Exception {
FactType ivals = getKbase().getFactType(packageName,"Intervalled");
Assert.assertNotNull(ivals);
Object data1 = ivals.newInstance();
ivals.set(data1,"value",-0.4);
Object data2 = ivals.newInstance();
ivals.set(data2,"value",0.3);
Object data3 = ivals.newInstance();
ivals.set(data3,"value",1.6);
Object data4 = ivals.newInstance();
ivals.set(data4,"value",2.0);
Object data5 = ivals.newInstance();
ivals.set(data5,"value",3.0);
Object data6 = ivals.newInstance();
ivals.set(data6,"value",8.2);
Object data7 = ivals.newInstance();
ivals.set(data7,"value",12.4);
Object data8 = ivals.newInstance();
ivals.set(data8,"value",999.9);
getKSession().insert(data1);
getKSession().insert(data2);
getKSession().insert(data3);
getKSession().insert(data4);
getKSession().insert(data5);
getKSession().insert(data6);
getKSession().insert(data7);
getKSession().insert(data8);
getKSession().fireAllRules();
Assert.assertEquals(false, ivals.get(data1, "valid"));
Assert.assertEquals(true, ivals.get(data2, "valid"));
Assert.assertEquals(false, ivals.get(data3, "valid"));
Assert.assertEquals(true, ivals.get(data4, "valid"));
Assert.assertEquals(false, ivals.get(data5, "valid"));
Assert.assertEquals(false, ivals.get(data6, "valid"));
Assert.assertEquals(true, ivals.get(data7, "valid"));
Assert.assertEquals(false, ivals.get(data8, "valid"));
}
@Test
public void testProperties() throws Exception {
getKSession().getWorkingMemoryEntryPoint("in_Vallued").insert(1);
getKSession().getWorkingMemoryEntryPoint("in_Intervalled").insert(8.3);
getKSession().getWorkingMemoryEntryPoint("in_Cat").insert("aa");
getKSession().getWorkingMemoryEntryPoint("in_Sort").insert(1);
getKSession().fireAllRules();
Collection<EventFactHandle> fact1 = getKSession().getFactHandles(new ClassObjectFilter(getKbase().getFactType(packageName, "Vallued").getFactClass()));
Assert.assertEquals(1, fact1.size());
//assertEquals(true, getKbase().getFactType(packageName, "Vallued").get(fact1.iterator().next().getObject(), "continuous"));
Collection<EventFactHandle> fact2 = getKSession().getFactHandles(new ClassObjectFilter(getKbase().getFactType(packageName, "Intervalled").getFactClass()));
Assert.assertEquals(1, fact2.size());
//assertEquals(true, getKbase().getFactType(packageName,"Intervalled").get(fact2.iterator().next().getObject(),"continuous"));
Collection<EventFactHandle> fact3 = getKSession().getFactHandles(new ClassObjectFilter(getKbase().getFactType(packageName, "Cat").getFactClass()));
Assert.assertEquals(1, fact3.size());
//assertEquals(true, getKbase().getFactType(packageName,"Cat").get(fact3.iterator().next().getObject(),"categorical"));
Collection<EventFactHandle> fact4 = getKSession().getFactHandles(new ClassObjectFilter(getKbase().getFactType(packageName, "Sort").getFactClass()));
Assert.assertEquals(1, fact4.size());
//assertEquals(true, getKbase().getFactType(packageName,"Sort").get(fact4.iterator().next().getObject(),"ordinal"));
}
@Test
public void testContinuousDomainValues() throws Exception {
FactType vals = getKbase().getFactType(packageName,"Vallued");
Assert.assertNotNull(vals);
// FactType defval = getKbase().getFactType(packageName,"DefaultValid");
// assertNotNull(vals);
// FactType definv = getKbase().getFactType(packageName,"DefaultInvalid");
// assertNotNull(vals);
Object data1 = vals.newInstance();
vals.set(data1,"value",1);
Object data2 = vals.newInstance();
vals.set(data2,"value",2);
Object data3 = vals.newInstance();
vals.set(data3,"value",3);
Object data0 = vals.newInstance();
vals.set(data0,"value",0);
Object data99 = vals.newInstance();
vals.set(data99,"value",-1);
getKSession().insert(data1);
getKSession().insert(data2);
getKSession().insert(data3);
getKSession().insert(data0);
getKSession().insert(data99);
getKSession().fireAllRules();
Assert.assertEquals(true, vals.get(data1, "valid"));
Assert.assertEquals(false, vals.get(data1, "missing"));
Assert.assertEquals(true, vals.get(data2, "valid"));
Assert.assertEquals(false, vals.get(data2, "missing"));
Assert.assertEquals(false, vals.get(data3, "valid"));
Assert.assertEquals(false, vals.get(data3, "missing"));
Assert.assertEquals(false, vals.get(data0, "valid"));
Assert.assertEquals(true, vals.get(data0, "missing"));
Assert.assertEquals(false, vals.get(data99, "valid"));
Assert.assertEquals(false, vals.get(data99, "missing"));
}
@Test
public void testContinuousDomainAsInsert() throws Exception {
getKSession().getWorkingMemoryEntryPoint("in_Vallued").insert(1);
getKSession().getWorkingMemoryEntryPoint("in_Intervalled").insert(8.3);
getKSession().getWorkingMemoryEntryPoint("in_DefaultValid").insert(1);
getKSession().getWorkingMemoryEntryPoint("in_DefaultInvalid").insert(1);
getKSession().fireAllRules();
checkFirstDataFieldOfTypeStatus(getKbase().getFactType(packageName, "Vallued"),true,false, null,1);
checkFirstDataFieldOfTypeStatus(getKbase().getFactType(packageName, "Intervalled"),false,false, null,8.3);
checkFirstDataFieldOfTypeStatus(getKbase().getFactType(packageName, "DefaultValid"),true,false, null,1);
checkFirstDataFieldOfTypeStatus(getKbase().getFactType(packageName, "DefaultInvalid"),false,false, null,1);
}
}