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());
        }
Beispiel #2
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));
        }
Beispiel #3
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());
        }
        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));
        }
Beispiel #5
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();
        }
Beispiel #6
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());
        }
Beispiel #7
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.");
        }
Beispiel #8
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());
        }
Beispiel #9
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());
        }
Beispiel #10
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
        }
Beispiel #11
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();
        }
Beispiel #12
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();
        }
Beispiel #13
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));
        }
Beispiel #14
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));
        }