Beispiel #1
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);
        }
Beispiel #2
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);
        }
Beispiel #3
0
        public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed)
        {
            bool sp = true;

            if (params_Renamed != null && params_Renamed.Length >= 2)
            {
                String val = params_Renamed[0].StringValue;
                if (val.Equals("off"))
                {
                    // turn off spooling
                    String     name   = params_Renamed[1].StringValue;
                    TextWriter writer = engine.removePrintWriter(name);
                    if (writer != null)
                    {
                        writer.Flush();
                        writer.Close();
                    }
                }
                else
                {
                    // turn on spooling
                    // we expected a file name
                    String spname = params_Renamed[0].StringValue;
                    String fname  = params_Renamed[1].StringValue;
                    try
                    {
                        FileInfo nfile = new FileInfo(fname);
                        nfile.Create();
                        FileStream   fos    = new FileStream(nfile.FullName, FileMode.Create);
                        StreamWriter writer = new StreamWriter(fos);
                        engine.addPrintWriter(spname, writer);
                    }
                    catch (FileNotFoundException e)
                    {
                        // we should report it
                        sp = false;
                    }
                    catch (IOException e)
                    {
                        sp = false;
                    }
                }
            }
            else
            {
                sp = false;
            }
            DefaultReturnVector ret = new DefaultReturnVector();
            DefaultReturnValue  rv  = new DefaultReturnValue(Constants.BOOLEAN_OBJECT, sp);

            ret.addReturnValue(rv);
            return(ret);
        }
Beispiel #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);
        }
Beispiel #5
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);
        }
Beispiel #6
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);
        }