Exemplo n.º 1
0
        public void MergeAsync()
        {
            var blocker = new AutoResetEvent(false);

            var lines = new[] {
                "CHAT Test {type=a,stage=b}",
                "SET ab = hello",
                "DO flip",
                "SAY ab",
            };

            var         file = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + Util.EpochMs() + ".ser");
            ChatRuntime rt   = new ChatRuntime(Client.AppConfig.TAC);

            rt.ParseText(String.Join("\n", lines));
            rt.Save(serializer, file);

            ChatRuntime rt2 = new ChatRuntime(Client.AppConfig.TAC);

            rt2.MergeAsync(serializer, file, () =>
            {
                blocker.Set();
                //Console.WriteLine("CALLBACK: "+ (rt2.chats != null ? rt2.chats.Count + " chats" : "Failed"));
                Assert.That(rt2.chats, Is.Not.Null);
                Assert.That(rt2.chats.Count, Is.GreaterThan(0));
            });

            blocker.WaitOne();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Create an engine from a script file or folder script files
        /// </summary>
        /// <param name="fileOrFolder">File or folder.</param>
        public MockGameEngine(FileInfo fileOrFolder)
        {
            var config   = AppConfig.TAC;
            var saveFile = new FileInfo("./runtime.ser");

            ChatRuntime tmp = new ChatRuntime(config);

            tmp.ParseFile(fileOrFolder);

            serializer = new SerializerMessagePack();
            tmp.Save(serializer, saveFile);

            dialogic = ChatRuntime.Create(serializer, saveFile, config);
            dialogic.Run();
        }
Exemplo n.º 3
0
        public void MergeFromFile()
        {
            var lines = new[] {
                "CHAT Test {type=a,stage=b}",
                "SAY Find",
                "FIND {type=a,stage=b,other=c}",
                "CHAT next {type=a,stage=b}",
                "SAY Done",
            };

            ChatRuntime rt;

            rt = new ChatRuntime(Client.AppConfig.TAC);
            rt.ParseText(String.Join("\n", lines));

            var s = rt.InvokeImmediate(null);

            Assert.That(s, Is.EqualTo("Find\nDone"));


            // Add more chats via Update, with higher search score
            var lines2 = new[] {
                "CHAT switch {type=a,stage=b,other=c,statelness=}",
                "SAY Added",
            };

            var file = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + Util.EpochMs() + ".ser");

            ChatRuntime rt2 = new ChatRuntime(Client.AppConfig.TAC);

            rt2.ParseText(String.Join("\n", lines2));
            rt2.Save(serializer, file);

            // append the 2nd runtime to the first
            rt.Merge(serializer, file);

            s = rt.InvokeImmediate(null);
            Assert.That(s, Is.EqualTo("Find\nAdded"));
        }