コード例 #1
0
        public void ObjectBindingTest1()
        {
            long ts = DateTime.Now.Ticks;
            int fired = 0;
            int activations = 0;
            using (TextWriter writer = Console.Out)
            {
                Rete engine = new Rete();
                engine.Watch = WatchType.WATCH_ALL;
                engine.addPrintWriter("Console", writer);
                engine.declareObject(typeof (Account), "Account");
                engine.loadRuleset(getRule1());
                engine.assertObject(GetAcct0(), "Account", false, false);
                activations = engine.CurrentFocus.ActivationCount;
                fired = engine.fire();
                engine.printWorkingMemory(true, false);

            double endTime = DateTime.Now.Ticks - ts;
            Console.WriteLine(String.Format("ObjectBindingTest1 completed in {0} seconds.", (endTime/10000000).ToString("0.000000")));
                writer.Flush();
                writer.Close();
                engine.close();
            }

            Assert.IsTrue(fired == 1);
            Assert.IsTrue(activations == 1);
            //AppDomain.Unload(AppDomain.CurrentDomain);
        }
コード例 #2
0
        public void BasicObjectBindingTest1()
        {
            long ts = DateTime.Now.Ticks;
            int fired = 0;
            int activations = 0;
            Basic basic = new Basic("one", 1);
            using (TextWriter writer = Console.Out)
            {
                Rete engine = new Rete();
                engine.Watch = WatchType.WATCH_ALL;
                engine.addPrintWriter("Console", writer);
                engine.declareObject(typeof (Basic), "Basic");
                engine.loadRuleset(getRule3());

                foreach (Defrule rule in  engine.CurrentFocus.AllRules)
                {
                    Console.WriteLine(rule.toPPString());
                }

                engine.assertObject(basic, "Basic", false, false);
                activations = engine.CurrentFocus.ActivationCount;
                fired = engine.fire();
                engine.printWorkingMemory(true, false);
            double endTime = DateTime.Now.Ticks - ts;
            Console.WriteLine(String.Format("BasicObjectBindingTest1 completed in {0} seconds.", (endTime/10000000).ToString("0.000000")));
                writer.Flush();
                writer.Close();
                engine.close();
            }

            Assert.IsTrue(fired == 1);
            Assert.IsTrue(activations == 1);
            //AppDomain.Unload(AppDomain.CurrentDomain);
        }
コード例 #3
0
 public void testLoadJoinSample13()
 {
     Rete engine = new Rete();
     engine.loadRuleset(getRoot("join_sample13.clp"));
     ICollection<object> rules = engine.CurrentFocus.AllRules;
     int count = rules.Count;
     IEnumerator itr = rules.GetEnumerator();
     while (itr.MoveNext())
     {
         Defrule r = (Defrule) itr.Current;
         Console.WriteLine(r.toPPString());
     }
     Assert.AreEqual(3, count);
     engine.close();
 }
コード例 #4
0
 public static double manners64()
 {
     long ts = DateTime.Now.Ticks;
     long totTime = 0;
     using (TextWriter writer = System.Console.Out)
     {
         Rete engine = new Rete();
         //engine.CurrentFocus.Lazy = true;
         engine.addPrintWriter("Console", writer);
         engine.loadRuleset(getRoot("manners64guests.clp"));
         engine.printWorkingMemory(false, false);
         totTime = DateTime.Now.Ticks - ts;
         writer.Flush();
         writer.Close();
         engine.close();
     }
     return totTime;
 }
コード例 #5
0
 public void manners64()
 {
     long ts = DateTime.Now.Ticks;
     using (TextWriter writer = Console.Out)
     {
         Rete engine = new Rete();
         engine.addPrintWriter("Console", writer);
         engine.loadRuleset(getRoot("manners64guests.clp"));
         engine.printWorkingMemory(false, false);
         writer.Flush();
         writer.Close();
         //engine.MessageRouter.ShutDown();
         engine.close();
     }
     double endTime = DateTime.Now.Ticks - ts;
     Console.WriteLine(String.Format("Manners 64 completed in {0} seconds.", (endTime/10000000).ToString("0.000000")));
     //AppDomain.Unload(AppDomain.CurrentDomain);
 }
コード例 #6
0
        private void RunRules(string dir, string clpFile)
        {
            var outFile = Path.Combine(dir, String.Concat(Path.GetFileNameWithoutExtension(clpFile), ".out"));
            var refFile = Path.Combine(dir, String.Concat(Path.GetFileNameWithoutExtension(clpFile), ".ref"));

            using (TextWriter writer = new StreamWriter(outFile))
            {
                Rete engine = new Rete();
                engine.addPrintWriter("File", writer);
                engine.loadRuleset(clpFile);
                engine.printWorkingMemory(false, false);
                engine.close();
                writer.Flush();
                writer.Close();
            }

            var outTxt = File.ReadAllText(outFile);
            var refTxt = File.ReadAllText(refFile);
        }