Example #1
0
        public void testOneFact()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            bean.Attr1 = "testString";
            bean.Attr2 = 1;
            short a3 = 3;

            bean.Attr3 = a3;
            long a4 = 101;

            bean.Attr4 = a4;
            float a5 = 10101;

            bean.Attr5 = a5;
            double a6 = 101.101;

            bean.Attr6 = a6;

            IFact fact = dtemp.createFact(bean, dc, 1);

            IFact[] list1 = new IFact[] { fact };
            IFact[] list2 = new IFact[] { fact };

            Index in1 = new Index(list1);
            Index in2 = new Index(list2);

            Assert.AreEqual(true, in1.Equals(in2));
        }
        public void testEqual()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            bean.Attr1 = ("testString");
            bean.Attr2 = (1);
            short a3 = 3;

            bean.Attr3 = (a3);
            long a4 = 101;

            bean.Attr4 = (a4);
            float a5 = 10101;

            bean.Attr5 = (a5);
            double a6 = 101.101;

            bean.Attr6 = (a6);

            IFact fact = dtemp.createFact(bean, dc, 1);

            Assert.IsNotNull(fact);
            Console.WriteLine(fact.toFactString());
            CompositeIndex ci = new CompositeIndex("attr1", Constants.EQUAL, fact.getSlotValue(0));

            Assert.IsNotNull(ci);
            Console.WriteLine(ci.toPPString());
        }
Example #3
0
        public void testTwoBinding()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");

            Slot[] slts = dtemp.AllSlots;

            Binding bn = new Binding();

            bn.LeftRow    = (0);
            bn.LeftIndex  = (0);
            bn.RightIndex = (0);

            Binding bn2 = new Binding();

            bn2.LeftRow    = (0);
            bn2.LeftIndex  = (2);
            bn2.RightIndex = (2);

            Binding[]     binds  = { bn, bn2 };
            HashedEqBNode btnode = new HashedEqBNode(1);

            btnode.Bindings = (binds);

            Console.WriteLine("betaNode::" + btnode.toPPString());
            Assert.IsNotNull(btnode.toPPString());
        }
        /* (non-Javadoc)
         * @see woolfel.engine.rete.Function#executeFunction(woolfel.engine.Creshendo.Util.Rete.Rete, woolfel.engine.rete.Parameter[])
         */

        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            if (engine != null && params_Renamed != null && params_Renamed.Length == 3)
            {
                BoundParam  bp       = (BoundParam)params_Renamed[0];
                StringParam slot     = (StringParam)params_Renamed[1];
                ValueParam  val      = (ValueParam)params_Renamed[2];
                Object      instance = bp.ObjectRef;
                Defclass    dc       = engine.findDefclass(instance);
                // we check to make sure the Defclass exists
                if (dc != null)
                {
                    MethodInfo setm = dc.getWriteMethod(slot.StringValue);
                    try
                    {
                        setm.Invoke(instance, (Object[])new Object[] { val });
                    }
                    catch (UnauthorizedAccessException e)
                    {
                    }
                    catch (TargetInvocationException e)
                    {
                    }
                }
            }
            return(new DefaultReturnVector());
        }
Example #5
0
        public void testCreateNode2()
        {
            // first create a rule engine instance
            Rete    engine = new Rete();
            NotJoin bn     = new NotJoin(engine.nextNodeId());

            Assert.IsNotNull(bn);

            // create a defclass
            Defclass dc = new Defclass(typeof(TestBean2));
            // create deftemplate
            Deftemplate dtemp = dc.createDeftemplate("testBean2");

            Assert.IsNotNull(dtemp);
            Binding[] binds = new Binding[1];
            Binding   b1    = new Binding();

            b1.LeftIndex   = (0);
            b1.IsObjectVar = (false);
            b1.LeftRow     = (0);
            b1.RightIndex  = (0);
            b1.VarName     = ("var1");
            binds[0]       = b1;

            // set the binding
            bn.Bindings = (binds);
            engine.close();
        }
Example #6
0
        /* (non-Javadoc)
         * @see woolfel.engine.rete.Function#executeFunction(woolfel.engine.Creshendo.Util.Rete.Rete, woolfel.engine.rete.Parameter[])
         */

        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            Object rtn = null;
            DefaultReturnVector drv = new DefaultReturnVector();

            if (engine != null && params_Renamed != null && params_Renamed.Length == 3)
            {
                BoundParam  bp       = (BoundParam)params_Renamed[0];
                StringParam slot     = (StringParam)params_Renamed[1];
                ValueParam  val      = (ValueParam)params_Renamed[2];
                Object      instance = bp.ObjectRef;
                Defclass    dc       = engine.findDefclass(instance);
                // we check to make sure the Defclass exists
                if (dc != null)
                {
                    MethodInfo getm = dc.getWriteMethod(slot.StringValue);
                    try
                    {
                        rtn = getm.Invoke(instance, (Object[])new Object[] { val });
                        int rtype = getMethodReturnType(getm);
                        DefaultReturnValue rvalue = new DefaultReturnValue(rtype, rtn);
                        drv.addReturnValue(rvalue);
                    }
                    catch (UnauthorizedAccessException e)
                    {
                        // TODO we should handle error, for now not implemented
                    }
                    catch (TargetInvocationException e)
                    {
                        // TODO we should handle error, for now not implemented
                    }
                }
            }
            return(drv);
        }
Example #7
0
        public void testCreateDeffactWithNull()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            bean.Attr1 = (null);
            bean.Attr2 = (1);
            short a3 = 3;

            bean.Attr3 = (a3);
            long a4 = 101;

            bean.Attr4 = (a4);
            float a5 = 10101;

            bean.Attr5 = (a5);
            double a6 = 101.101;

            bean.Attr6 = (a6);

            IFact fact = dtemp.createFact(bean, dc, 1);

            Assert.IsNotNull(fact);
            Console.WriteLine(fact.toFactString());
        }
Example #8
0
        public void testCreateTemplateFromClass()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");

            Assert.IsNotNull(dtemp);
            Console.WriteLine(dtemp.toPPString());
        }
Example #9
0
        public void testObject()
        {
            Defclass dc = new Defclass(typeof(Account));

            Assert.IsNotNull(dc);
            Deftemplate dtemp = dc.createDeftemplate("account");

            Assert.IsNotNull(dtemp);
        }
Example #10
0
        public void testCreateTemplate2()
        {
            Defclass    dc    = new Defclass(typeof(Account));
            Deftemplate dtemp = dc.createDeftemplate("account");

            Assert.IsNotNull(dtemp);
            Assert.IsNotNull(dtemp.toPPString());
            Console.WriteLine(dtemp.toPPString());
        }
Example #11
0
        public void testInterface()
        {
            Defclass dc = new Defclass(typeof(IAccount));

            Assert.IsNotNull(dc);
            Deftemplate dtemp = dc.createDeftemplate("account");

            Assert.IsNotNull(dtemp);
            Assert.AreEqual(14, dtemp.AllSlots.Length);
        }
        public void testIndex()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            bean.Attr1 = ("testString");
            bean.Attr2 = (1);
            short a3 = 3;

            bean.Attr3 = (a3);
            long a4 = 101;

            bean.Attr4 = (a4);
            float a5 = 10101;

            bean.Attr5 = (a5);
            double a6 = 101.101;

            bean.Attr6 = (a6);

            IFact fact = dtemp.createFact(bean, dc, 1);

            Assert.IsNotNull(fact);
            Console.WriteLine(fact.toFactString());
            CompositeIndex ci =
                new CompositeIndex("attr1", Constants.EQUAL, fact.getSlotValue(0));

            Assert.IsNotNull(ci);
            Console.WriteLine(ci.toPPString());
            GenericHashMap <object, object> map = new GenericHashMap <object, object>();

            map.Put(ci, bean);

            CompositeIndex ci2 =
                new CompositeIndex("attr1", Constants.EQUAL, fact.getSlotValue(0));

            Assert.IsTrue(map.ContainsKey(ci2));

            CompositeIndex ci3 =
                new CompositeIndex("attr1", Constants.NOTEQUAL, fact.getSlotValue(0));

            Assert.IsFalse(map.ContainsKey(ci3));

            CompositeIndex ci4 =
                new CompositeIndex("attr1", Constants.NILL, fact.getSlotValue(0));

            Assert.IsFalse(map.ContainsKey(ci4));

            CompositeIndex ci5 =
                new CompositeIndex("attr1", Constants.NOTNILL, fact.getSlotValue(0));

            Assert.IsFalse(map.ContainsKey(ci5));
        }
Example #13
0
        public void testGetDeftemplate()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");

            Assert.IsNotNull(dtemp);
            Assert.AreEqual("testBean2", dtemp.Name);
            Console.WriteLine("deftemplate name: " + dtemp.Name);
            Assert.AreEqual(6, dtemp.NumberOfSlots);
            Console.WriteLine("slot count: " + dtemp.NumberOfSlots);
        }
Example #14
0
        public void testAssertLeftOne()
        {
            // first create a rule engine instance
            Rete    engine = new Rete();
            NotJoin bn     = new NotJoin(engine.nextNodeId());

            Assert.IsNotNull(bn);

            // create a defclass
            Defclass dc = new Defclass(typeof(TestBean2));
            // create deftemplate
            Deftemplate dtemp = dc.createDeftemplate("testBean2");

            Assert.IsNotNull(dtemp);
            Binding[] binds = new Binding[1];
            Binding   b1    = new Binding();

            b1.LeftIndex   = (0);
            b1.IsObjectVar = (false);
            b1.LeftRow     = (0);
            b1.RightIndex  = (0);
            b1.VarName     = ("var1");
            binds[0]       = b1;

            // set the binding
            bn.Bindings = (binds);

            TestBean2 bean = new TestBean2();

            bean.Attr1 = ("random1");
            bean.Attr2 = (101);
            short s = 10001;

            bean.Attr3 = (s);
            long l = 10101018;

            bean.Attr4 = (l);
            bean.Attr5 = (1010101);
            bean.Attr6 = (1001.1001);
            IFact f1 = dtemp.createFact(bean, dc, engine.nextFactId());

            try
            {
                bn.assertLeft(new Index(new IFact[] { f1 }), engine, engine.WorkingMemory);
                IGenericMap <Object, Object> bmem = (IGenericMap <Object, Object>)engine.WorkingMemory.getBetaLeftMemory(bn);
                Assert.AreEqual(1, bmem.Count);
            }
            catch (AssertException e)
            {
                Console.WriteLine(e.Message);
            }
            engine.close();
        }
Example #15
0
        public void testCreateDeffactWithPrimitive()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            bean.Attr1 = ("testString");

            IFact fact = dtemp.createFact(bean, dc, 1);

            Assert.IsNotNull(fact);
            Console.WriteLine(fact.toFactString());
        }
Example #16
0
        public void testOneSlot()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            Slot[]         slts = dtemp.AllSlots;
            ObjectTypeNode otn  = new ObjectTypeNode(1, dtemp);
            AlphaNode      an   = new AlphaNode(1);

            slts[0].Value = ConversionUtils.convert(110);
            an.Operator   = Constants.EQUAL;
            an.Slot       = (slts[0]);
            Console.WriteLine("node::" + an.ToString());
            Assert.IsNotNull(an.ToString(), "Should have a value.");
        }
Example #17
0
        public void testCreateTemplateSlot()
        {
            String      acc   = "account";
            Defclass    dc    = new Defclass(typeof(Account));
            Deftemplate dtemp = dc.createDeftemplate(acc);

            Assert.IsNotNull(dtemp);
            Assert.IsNotNull(dtemp.toPPString());
            Assert.AreEqual(acc, dtemp.Name);
            Console.WriteLine(dtemp.toPPString());
            Slot[] theslots = dtemp.AllSlots;
            for (int idx = 0; idx < theslots.Length; idx++)
            {
                Slot aslot = theslots[idx];
                Assert.AreEqual(idx, aslot.Id);
                Console.WriteLine("slot id: " + aslot.Id);
            }
        }
Example #18
0
        public void testPropertyCount()
        {
            Defclass dc = new Defclass(typeof(TestBean2));

            if (dc.PropertyDescriptors != null)
            {
                PropertyInfo[] pds = dc.PropertyDescriptors;
                Console.WriteLine(pds.Length);
                for (int idx = 0; idx < pds.Length; idx++)
                {
                    PropertyInfo pd = pds[idx];
                    Console.WriteLine(idx + " name=" + pd.Name);
                }
                Assert.AreEqual(6, pds.Length);
            }
            else
            {
                // this will report the test failed
                Assert.IsNotNull(dc.PropertyDescriptors);
            }
        }
Example #19
0
        public void testCreateFactFromInstance()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            bean.Attr1 = ("random1");
            bean.Attr2 = (101);
            short s = 10001;

            bean.Attr3 = (s);
            long l = 10101018;

            bean.Attr4 = (l);
            bean.Attr5 = (1010101);
            bean.Attr6 = (1001.1001);
            IFact fact = dtemp.createFact(bean, dc, 0);

            Assert.IsNotNull(fact);
            Console.WriteLine(fact.toFactString());
        }
Example #20
0
        /// <summary> The method uses Defclass, Class, Deftemplate and Rete to create a new
        /// instance of the java object. Once the instance is created, the method
        /// uses Defclass to look up the write method and calls it with the
        /// appropriate value.
        /// </summary>
        /// <param name="">cond
        /// </param>
        /// <param name="">templ
        /// </param>
        /// <param name="">engine
        /// </param>
        /// <returns>
        ///
        /// </returns>
        public static Object generateJavaFacts(ObjectCondition cond, Deftemplate templ, Rete.Rete engine)
        {
            try
            {
                Type          theclz = Type.GetType(templ.ClassName);
                Defclass      dfc    = engine.findDefclass(theclz);
                Object        data   = CreateNewInstance(theclz);
                IConstraint[] cnstr  = cond.Constraints;
                for (int idx = 0; idx < cnstr.Length; idx++)
                {
                    IConstraint cn = cnstr[idx];
                    if (cn is LiteralConstraint)
                    {
                        MethodInfo meth = dfc.getWriteMethod(cn.Name);
                        meth.Invoke(data, (Object[])new Object[] { cn.Value });
                    }
                }
                // for now the method doesn't inspect the bindings
                // later on it needs to be added

                return(data);
            }

            catch (UnauthorizedAccessException e)
            {
                return(null);
            }
            catch (ArgumentException e)
            {
                return(null);
            }
            catch (TargetInvocationException e)
            {
                return(null);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Example #21
0
        public void testTwoSlots()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            Slot[]         slts = dtemp.AllSlots;
            ObjectTypeNode otn  = new ObjectTypeNode(1, dtemp);
            AlphaNode      an1  = new AlphaNode(1);
            AlphaNode      an2  = new AlphaNode(1);

            slts[0].Value = ("testString");
            slts[1].Value = (ConversionUtils.convert(999));

            an1.Slot     = (slts[0]);
            an1.Operator = (Constants.EQUAL);
            Console.WriteLine("node::" + an1.toPPString());
            Assert.IsNotNull(an1.toPPString());

            an2.Slot     = (slts[1]);
            an2.Operator = (Constants.GREATER);
            Console.WriteLine("node::" + an2.toPPString());
            Assert.IsNotNull(an2.toPPString());
        }
Example #22
0
        public void testHashMapIndex()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            bean.Attr1 = "testString";
            bean.Attr2 = 1;
            short a3 = 3;

            bean.Attr3 = a3;
            long a4 = 101;

            bean.Attr4 = a4;
            float a5 = 10101;

            bean.Attr5 = a5;
            double a6 = 101.101;

            bean.Attr6 = a6;

            TestBean2 bean2 = new TestBean2();

            bean2.Attr1 = "testString2";
            bean2.Attr2 = 12;
            short a32 = 32;

            bean2.Attr3 = a32;
            long a42 = 1012;

            bean2.Attr4 = a42;
            float a52 = 101012;

            bean2.Attr5 = a52;
            double a62 = 101.1012;

            bean2.Attr6 = a62;

            TestBean2 bean3 = new TestBean2();

            bean3.Attr1 = "testString3";
            bean3.Attr2 = 13;
            short a33 = 33;

            bean3.Attr3 = a33;
            long a43 = 1013;

            bean3.Attr4 = a43;
            float a53 = 101013;

            bean3.Attr5 = a53;
            double a63 = 101.1013;

            bean3.Attr6 = a63;

            TestBean2 bean4 = new TestBean2();

            bean4.Attr1 = "testString4";
            bean4.Attr2 = 14;
            short a34 = 34;

            bean4.Attr3 = a34;
            long a44 = 1014;

            bean4.Attr4 = a44;
            float a54 = 101014;

            bean4.Attr5 = a54;
            double a64 = 101.1014;

            bean4.Attr6 = a64;

            TestBean2 bean5 = new TestBean2();

            bean5.Attr1 = "testString5";
            bean5.Attr2 = 15;
            short a35 = 35;

            bean5.Attr3 = a35;
            long a45 = 1015;

            bean5.Attr4 = a45;
            float a55 = 101015;

            bean5.Attr5 = a55;
            double a65 = 101.1015;

            bean5.Attr6 = a65;

            IFact fact  = dtemp.createFact(bean, dc, 1);
            IFact fact2 = dtemp.createFact(bean2, dc, 1);
            IFact fact3 = dtemp.createFact(bean3, dc, 1);
            IFact fact4 = dtemp.createFact(bean4, dc, 1);
            IFact fact5 = dtemp.createFact(bean5, dc, 1);

            IFact[] list1 = new IFact[] { fact, fact2, fact3, fact4, fact5 };
            IFact[] list2 = new IFact[] { fact, fact2, fact3, fact4, fact5 };

            Index in1 = new Index(list1);
            Index in2 = new Index(list2);

            Assert.AreEqual(true, in1.Equals(in2));

            GenericHashMap <object, object> map = new GenericHashMap <object, object>();

            map.Put(in1, list1);
            // simple test to see if HashMap.ContainsKey(in1) works
            Assert.AreEqual(true, map.ContainsKey(in1));
            // now test with the second instance of index, this should return
            // true, since Index class overrides Equals() and GetHashCode().
            Assert.AreEqual(true, map.ContainsKey(in2));
        }
Example #23
0
        public void testPropogateNoMatch()
        {
            Console.WriteLine("testPropogateNoMatch");
            // first create a rule engine instance
            Rete          engine = new Rete();
            NotJoin       nj     = new NotJoin(engine.nextNodeId());
            HashedEqBNode bn2    = new HashedEqBNode(engine.nextNodeId());

            Assert.IsNotNull(nj);

            // create a defclass
            Defclass dc = new Defclass(typeof(TestBean2));
            // create deftemplate
            Deftemplate dtemp = dc.createDeftemplate("testBean2");

            Assert.IsNotNull(dtemp);
            Binding[] binds = new Binding[1];
            Binding   b1    = new Binding();

            b1.LeftIndex   = (0);
            b1.IsObjectVar = (false);
            b1.LeftRow     = (0);
            b1.RightIndex  = (0);
            b1.VarName     = ("var1");
            binds[0]       = b1;

            Binding[] binds2 = new Binding[1];
            Binding   b2     = new Binding();

            b2.LeftIndex   = (1);
            b2.IsObjectVar = (false);
            b2.LeftRow     = (0);
            b2.RightIndex  = (1);
            b2.VarName     = ("var2");
            binds2[0]      = b2;

            // set the binding
            nj.Bindings = (binds);

            bn2.Bindings = (binds2);

            // now add the second Not to the first
            try
            {
                nj.addSuccessorNode(bn2, engine, engine.WorkingMemory);
            }
            catch (AssertException e)
            {
                Console.WriteLine(e.Message);
            }

            int       count = 10;
            ArrayList data  = new ArrayList();

            for (int idx = 0; idx < count; idx++)
            {
                TestBean2 bean = new TestBean2();
                bean.Attr1 = ("random" + idx);
                bean.Attr2 = (101 + idx);
                short s = 10001;
                bean.Attr3 = (s);
                long l = 10101018 + idx;
                bean.Attr4 = (l);
                bean.Attr5 = (1010101);
                bean.Attr6 = (1001.1001);
                IFact fact = dtemp.createFact(bean, dc, engine.nextFactId());
                data.Add(fact);
            }

            IEnumerator itr = data.GetEnumerator();

            while (itr.MoveNext())
            {
                try
                {
                    IFact f1 = (IFact)itr.Current;
                    nj.assertLeft(new Index(new IFact[] { f1 }), engine, engine.WorkingMemory);
                    nj.assertRight(f1, engine, engine.WorkingMemory);
                }
                catch (AssertException e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            IGenericMap <IFact, IFact> rbmem = (IGenericMap <IFact, IFact>)engine.WorkingMemory.getBetaRightMemory(nj);

            Assert.AreEqual(count, rbmem.Count);

            IGenericMap <Object, Object> lbmem = (IGenericMap <Object, Object>)engine.WorkingMemory.getBetaLeftMemory(nj);

            Assert.AreEqual(count, lbmem.Count);

            // now check the BetaMemory has matches
            Console.WriteLine(nj.toPPString());
            IEnumerator mitr = lbmem.Values.GetEnumerator();

            while (mitr.MoveNext())
            {
                IBetaMemory btm = (IBetaMemory)mitr.Current;
                Assert.AreEqual(0, btm.matchCount());
                Console.WriteLine("match count=" + btm.matchCount() +
                                  " - " + btm.toPPString());
            }

            IGenericMap <Object, Object> lbmem2 = (IGenericMap <Object, Object>)engine.WorkingMemory.getBetaLeftMemory(bn2);

            Assert.AreEqual(count, lbmem2.Count);
            Console.WriteLine(bn2.toPPString());
            IEnumerator mitr2 = lbmem2.Values.GetEnumerator();

            engine.close();
            // TODO need to update the test to check the match count
            // by getting the right memory
        }
Example #24
0
        public void testPropogateChange()
        {
            Console.WriteLine("testPropogateChange");
            // first create a rule engine instance
            Rete          engine = new Rete();
            NotJoin       nj     = new NotJoin(engine.nextNodeId());
            HashedEqBNode bn2    = new HashedEqBNode(engine.nextNodeId());

            Assert.IsNotNull(nj);

            // create a defclass
            Defclass dc = new Defclass(typeof(TestBean2));
            // create deftemplate
            Deftemplate dtemp = dc.createDeftemplate("testBean2");

            Assert.IsNotNull(dtemp);
            Binding[] binds = new Binding[1];
            Binding   b1    = new Binding();

            b1.LeftIndex   = (0);
            b1.IsObjectVar = (false);
            b1.LeftRow     = (0);
            b1.RightIndex  = (0);
            b1.VarName     = ("var1");
            binds[0]       = b1;

            Binding[] binds2 = new Binding[1];
            Binding   b2     = new Binding();

            b2.LeftIndex   = (1);
            b2.IsObjectVar = (false);
            b2.LeftRow     = (0);
            b2.RightIndex  = (1);
            b2.VarName     = ("var2");
            binds2[0]      = b2;

            // set the binding
            nj.Bindings = (binds);

            bn2.Bindings = (binds2);

            // now add the second Not to the first
            try
            {
                nj.addSuccessorNode(bn2, engine, engine.WorkingMemory);
            }
            catch (AssertException e)
            {
                Console.WriteLine(e.Message);
            }

            int       count = 2;
            ArrayList data  = new ArrayList();

            for (int idx = 0; idx < count; idx++)
            {
                TestBean2 bean = new TestBean2();
                bean.Attr1 = ("random");
                bean.Attr2 = (101 + idx);
                short s = 10001;
                bean.Attr3 = (s);
                long l = 10101018 + idx;
                bean.Attr4 = (l);
                bean.Attr5 = (1010101);
                bean.Attr6 = (1001.1001);
                IFact fact = dtemp.createFact(bean, dc, engine.nextFactId());
                data.Add(fact);
            }

            IEnumerator itr = data.GetEnumerator();

            while (itr.MoveNext())
            {
                try
                {
                    IFact f1 = (IFact)itr.Current;
                    nj.assertLeft(new Index(new IFact[] { f1 }), engine, engine.WorkingMemory);
                }
                catch (AssertException e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            IGenericMap <Object, Object> lbmem = (IGenericMap <Object, Object>)engine.WorkingMemory.getBetaLeftMemory(nj);

            Assert.AreEqual(count, lbmem.Count);

            IGenericMap <Object, Object> lbmem2 = (IGenericMap <Object, Object>)engine.WorkingMemory.getBetaLeftMemory(bn2);

            Assert.AreEqual(2, lbmem2.Count);

            itr = data.GetEnumerator();
            while (itr.MoveNext())
            {
                try
                {
                    IFact f1 = (IFact)itr.Current;
                    nj.assertRight(f1, engine, engine.WorkingMemory);
                }
                catch (AssertException e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            IGenericMap <IFact, IFact> rbmem = (IGenericMap <IFact, IFact>)engine.WorkingMemory.getBetaRightMemory(nj);

            Assert.AreEqual(count, rbmem.Count);

            // once the facts are asserted to the right, there should be no
            // facts in successor. this makes sure that assertRight correctly
            // results in a retract.
            lbmem2 = (IGenericMap <Object, Object>)engine.WorkingMemory.getBetaLeftMemory(bn2);
            Assert.AreEqual(0, lbmem2.Count);
            engine.close();
        }
Example #25
0
        public void testMatch()
        {
            // first create a rule engine instance
            Rete    engine = new Rete();
            NotJoin bn     = new NotJoin(engine.nextNodeId());

            Assert.IsNotNull(bn);

            // create a defclass
            Defclass dc = new Defclass(typeof(TestBean2));
            // create deftemplate
            Deftemplate dtemp = dc.createDeftemplate("testBean2");

            Assert.IsNotNull(dtemp);
            Binding[] binds = new Binding[1];
            Binding   b1    = new Binding();

            b1.LeftIndex   = (0);
            b1.IsObjectVar = (false);
            b1.LeftRow     = (0);
            b1.RightIndex  = (0);
            b1.VarName     = ("var1");
            binds[0]       = b1;

            // set the binding
            bn.Bindings = (binds);

            int       count = 10;
            ArrayList data  = new ArrayList();

            for (int idx = 0; idx < count; idx++)
            {
                TestBean2 bean = new TestBean2();
                bean.Attr1 = ("random");
                bean.Attr2 = (101);
                short s = 10001;
                bean.Attr3 = (s);
                long l = 10101018;
                bean.Attr4 = (l);
                bean.Attr5 = (1010101);
                bean.Attr6 = (1001.1001);
                IFact fact = dtemp.createFact(bean, dc, engine.nextFactId());
                data.Add(fact);
            }

            IEnumerator itr = data.GetEnumerator();

            while (itr.MoveNext())
            {
                try
                {
                    IFact f1 = (IFact)itr.Current;
                    bn.assertLeft(new Index(new IFact[] { f1 }), engine, engine.WorkingMemory);
                    bn.assertRight(f1, engine, engine.WorkingMemory);
                }
                catch (AssertException e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            IGenericMap <IFact, IFact> rbmem = (IGenericMap <IFact, IFact>)engine.WorkingMemory.getBetaRightMemory(bn);

            Assert.AreEqual(count, rbmem.Count);

            IGenericMap <Object, Object> lbmem = (IGenericMap <Object, Object>)engine.WorkingMemory.getBetaLeftMemory(bn);

            Assert.AreEqual(count, lbmem.Count);

            // now check the BetaMemory has matches
            Console.WriteLine(bn.toPPString());
            IEnumerator mitr = lbmem.Values.GetEnumerator();

            while (mitr.MoveNext())
            {
                IBetaMemory btm = (IBetaMemory)mitr.Current;
                Assert.AreEqual(9, btm.matchCount());
                Console.WriteLine("match count=" + btm.matchCount() +
                                  " - " + btm.toPPString());
            }
            engine.close();
        }
Example #26
0
        public void testFiveFacts()
        {
            Defclass    dc    = new Defclass(typeof(TestBean2));
            Deftemplate dtemp = dc.createDeftemplate("testBean2");
            TestBean2   bean  = new TestBean2();

            bean.Attr1 = "testString";
            bean.Attr2 = 1;
            short a3 = 3;

            bean.Attr3 = a3;
            long a4 = 101;

            bean.Attr4 = a4;
            float a5 = 10101;

            bean.Attr5 = a5;
            double a6 = 101.101;

            bean.Attr6 = a6;

            TestBean2 bean2 = new TestBean2();

            bean2.Attr1 = "testString2";
            bean2.Attr2 = 12;
            short a32 = 32;

            bean2.Attr3 = a32;
            long a42 = 1012;

            bean2.Attr4 = a42;
            float a52 = 101012;

            bean2.Attr5 = a52;
            double a62 = 101.1012;

            bean2.Attr6 = a62;

            TestBean2 bean3 = new TestBean2();

            bean3.Attr1 = "testString3";
            bean3.Attr2 = 13;
            short a33 = 33;

            bean3.Attr3 = a33;
            long a43 = 1013;

            bean3.Attr4 = a43;
            float a53 = 101013;

            bean3.Attr5 = a53;
            double a63 = 101.1013;

            bean3.Attr6 = a63;

            TestBean2 bean4 = new TestBean2();

            bean4.Attr1 = "testString4";
            bean4.Attr2 = 14;
            short a34 = 34;

            bean4.Attr3 = a34;
            long a44 = 1014;

            bean4.Attr4 = a44;
            float a54 = 101014;

            bean4.Attr5 = a54;
            double a64 = 101.1014;

            bean4.Attr6 = a64;

            TestBean2 bean5 = new TestBean2();

            bean5.Attr1 = "testString5";
            bean5.Attr2 = 15;
            short a35 = 35;

            bean5.Attr3 = a35;
            long a45 = 1015;

            bean5.Attr4 = a45;
            float a55 = 101015;

            bean5.Attr5 = a55;
            double a65 = 101.1015;

            bean5.Attr6 = a65;

            IFact fact  = dtemp.createFact(bean, dc, 1);
            IFact fact2 = dtemp.createFact(bean2, dc, 1);
            IFact fact3 = dtemp.createFact(bean3, dc, 1);
            IFact fact4 = dtemp.createFact(bean4, dc, 1);
            IFact fact5 = dtemp.createFact(bean5, dc, 1);

            IFact[] list1 = new IFact[] { fact, fact2, fact3, fact4, fact5 };
            IFact[] list2 = new IFact[] { fact, fact2, fact3, fact4, fact5 };

            Index in1 = new Index(list1);
            Index in2 = new Index(list2);

            Assert.AreEqual(true, in1.Equals(in2));
        }
Example #27
0
        public void testJavaBean()
        {
            Defclass dc = new Defclass(typeof(TestBean2));

            Assert.AreEqual(true, dc.JavaBean);
        }
Example #28
0
        public void testBeanInfo()
        {
            Defclass dc = new Defclass(typeof(TestBean2));

            Assert.IsNotNull(dc.BeanInfo);
        }
Example #29
0
        public void testNonJavaBeans()
        {
            Defclass dc = new Defclass(typeof(TestBean));

            Assert.AreEqual(false, dc.JavaBean);
        }
Example #30
0
        public void testPropertyDescriptor()
        {
            Defclass dc = new Defclass(typeof(TestBean2));

            Assert.IsNotNull(dc.PropertyDescriptors);
        }