/* * 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.definition.type.FactType; import org.drools.pmml.pmml_4_1.DroolsAbstractPMMLTest; import org.drools.runtime.ClassObjectFilter; import org.drools.runtime.rule.WorkingMemoryEntryPoint; import org.junit.After; import org.junit.Test; public class DataDictionaryTest extends DroolsAbstractPMMLTest { private static final boolean VERBOSE = false; private static final String source = "org/drools/pmml/pmml_4_1/test_data_dic.xml"; private static final String packageName = "org.drools.pmml.pmml_4_1.test"; @After public void tearDown() { getKSession().dispose(); } @Test public void testDataTypes() throws Exception { setKSession(getModelSession(source,VERBOSE)); setKbase(getKSession().getKnowledgeBase()); FactType gender = getKbase().getFactType(packageName,"Gender"); FactType noclaims = getKbase().getFactType(packageName,"NoOfClaims"); FactType scrambled = getKbase().getFactType(packageName,"Scrambled"); FactType domicile = getKbase().getFactType(packageName,"Domicile"); FactType agecar = getKbase().getFactType(packageName,"AgeOfCar"); FactType amklaims = getKbase().getFactType(packageName,"AmountOfClaims"); Object g = gender.newInstance(); Assert.assertEquals("org.drools.pmml.pmml_4_1.test.Gender", g.getClass().getName()); gender.set(g,"value","M"); Assert.assertEquals("M", gender.get(g, "value")); Object n = noclaims.newInstance(); Assert.assertEquals("org.drools.pmml.pmml_4_1.test.NoOfClaims", n.getClass().getName()); noclaims.set(n, "value", "> 3"); Assert.assertEquals("> 3", noclaims.get(n, "value")); Object s = scrambled.newInstance(); Assert.assertEquals("org.drools.pmml.pmml_4_1.test.Scrambled", s.getClass().getName()); scrambled.set(s, "value", 1); Assert.assertEquals(1, scrambled.get(s, "value")); Object d = domicile.newInstance(); Assert.assertEquals("org.drools.pmml.pmml_4_1.test.Domicile", d.getClass().getName()); domicile.set(d, "value", "SomeWhere"); Assert.assertEquals("SomeWhere", domicile.get(d, "value")); Object a = agecar.newInstance(); Assert.assertEquals("org.drools.pmml.pmml_4_1.test.AgeOfCar", a.getClass().getName()); agecar.set(a, "value", 24.3); Assert.assertEquals(24.3, agecar.get(a, "value")); Object k = amklaims.newInstance(); Assert.assertEquals("org.drools.pmml.pmml_4_1.test.AmountOfClaims", k.getClass().getName()); amklaims.set(k, "value", 9); Assert.assertEquals(9, amklaims.get(k, "value")); try { agecar.set(a,"value","Not a String field"); Assert.fail(); } catch (ClassCastException cce) { Assert.assertEquals(24.3, agecar.get(a, "value")); } Assert.assertFalse((Boolean) agecar.get(a, "valid")); agecar.set(a, "valid", true); Assert.assertTrue((Boolean) agecar.get(a, "valid")); Assert.assertFalse((Boolean) agecar.get(a, "missing")); agecar.set(a,"missing",true); Assert.assertTrue((Boolean) agecar.get(a, "missing")); // assertFalse((Boolean) agecar.get(a, "cyclic")); //agecar.set(a,"cyclic",true); // assertTrue((Boolean) agecar.get(a,"cyclic")); } @Test public void testEntryPoints() throws Exception { setKSession(getModelSession(source,VERBOSE)); setKbase(getKSession().getKnowledgeBase()); FactType gender = getKbase().getFactType(packageName,"Gender"); FactType noclaims = getKbase().getFactType(packageName,"NoOfClaims"); FactType scrambled = getKbase().getFactType(packageName,"Scrambled"); FactType domicile = getKbase().getFactType(packageName,"Domicile"); FactType agecar = getKbase().getFactType(packageName,"AgeOfCar"); FactType amklaims = getKbase().getFactType(packageName,"AmountOfClaims"); Assert.assertEquals(7, getKSession().getWorkingMemoryEntryPoints().size()); WorkingMemoryEntryPoint gender_ep = getKSession().getWorkingMemoryEntryPoint("in_Gender"); Assert.assertNotNull(gender_ep); WorkingMemoryEntryPoint noclaims_ep = getKSession().getWorkingMemoryEntryPoint("in_NoOfClaims"); Assert.assertNotNull(noclaims_ep); WorkingMemoryEntryPoint scrambled_ep = getKSession().getWorkingMemoryEntryPoint("in_Scrambled"); Assert.assertNotNull(scrambled_ep); WorkingMemoryEntryPoint domicile_ep = getKSession().getWorkingMemoryEntryPoint("in_Domicile"); Assert.assertNotNull(domicile_ep); WorkingMemoryEntryPoint agecar_ep = getKSession().getWorkingMemoryEntryPoint("in_AgeOfCar"); Assert.assertNotNull(agecar_ep); WorkingMemoryEntryPoint amklaims_ep = getKSession().getWorkingMemoryEntryPoint("in_AmountOfClaims"); Assert.assertNotNull(amklaims_ep); gender_ep.insert("M"); noclaims_ep.insert("> 4"); scrambled_ep.insert(4); domicile_ep.insert("way out"); agecar_ep.insert(new Double("3.4")); amklaims_ep.insert(9); getKSession().fireAllRules(); System.err.println(reportWMObjects(getKSession())); Assert.assertEquals(6, getKSession().getObjects().size()); Assert.assertEquals(1, getKSession().getObjects(new ClassObjectFilter(gender.getFactClass())).size()); Assert.assertEquals(1, getKSession().getObjects(new ClassObjectFilter(noclaims.getFactClass())).size()); Assert.assertEquals(1, getKSession().getObjects(new ClassObjectFilter(scrambled.getFactClass())).size()); Assert.assertEquals(1, getKSession().getObjects(new ClassObjectFilter(domicile.getFactClass())).size()); Assert.assertEquals(1, getKSession().getObjects(new ClassObjectFilter(agecar.getFactClass())).size()); Assert.assertEquals(1, getKSession().getObjects(new ClassObjectFilter(amklaims.getFactClass())).size()); checkFirstDataFieldOfTypeStatus(amklaims,true,false, null,9); checkFirstDataFieldOfTypeStatus(domicile,false,false,null,"way out"); } }