Esempio n. 1
0
        public void SaveAndRestoreChats()
        {
            ChatRuntime rtOut, rtIn;

            var testfile = AppDomain.CurrentDomain.BaseDirectory;

            testfile += "../../../../dialogic/data/noglobal.gs";

            rtIn = new ChatRuntime(Client.AppConfig.TAC);
            rtIn.ParseFile(new FileInfo(testfile));

            var bytes = serializer.ToBytes(rtIn);

            rtOut = ChatRuntime.Create(serializer, bytes, AppConfig.TAC);

            // check they are identical
            Assert.That(rtIn, Is.EqualTo(rtOut));

            var inCmds  = rtIn.Chats();
            var outCmds = rtOut.Chats();

            Assert.That(rtOut.ToString(), Is.EqualTo(rtIn.ToString()));

            Assert.That(inCmds.Count, Is.EqualTo(outCmds.Count));
            for (int i = 0; i < inCmds.Count; i++)
            {
                var chat1 = inCmds.ElementAt(i);
                var chat2 = outCmds.ElementAt(i);
                Assert.That(chat1.text, Is.EqualTo(chat2.text));
                Assert.That(chat1.commands.Count, Is.EqualTo(chat2.commands.Count));
                Assert.That(chat1.ToTree(), Is.EqualTo(chat2.ToTree()));
            }
        }
Esempio 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();
        }
Esempio n. 3
0
        public void SerializationPerformance()
        {
            if (!RUN_PROFILING_TESTS)
            {
                return;
            }

            ChatRuntime.VERIFY_UNIQUE_CHAT_LABELS = false;

            ChatRuntime rtOut, rtIn;

            byte[] bytes      = null;
            int    iterations = 10;

            var testfile = AppDomain.CurrentDomain.BaseDirectory;

            testfile += "../../../../dialogic/data/allchats.gs";

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

            var watch = System.Diagnostics.Stopwatch.StartNew();

            for (int i = 0; i < iterations; i++)
            {
                rtIn.ParseFile(new FileInfo(testfile));
            }
            var numChats = rtIn.Chats().Count;

            watch.Stop(); Console.WriteLine("Parsed " + numChats
                                            + " chats in " + watch.ElapsedMilliseconds / 1000.0 + "s");

            for (int i = 0; i < iterations; i++)
            {
                watch = System.Diagnostics.Stopwatch.StartNew();
                bytes = serializer.ToBytes(rtIn);
                watch.Stop();
                Console.WriteLine("Serialize #" + i + ": "
                                  + watch.ElapsedMilliseconds / 1000.0 + "s");
            }

            for (int i = 0; i < iterations; i++)
            {
                watch = System.Diagnostics.Stopwatch.StartNew();
                rtOut = ChatRuntime.Create(serializer, bytes, AppConfig.TAC);
                watch.Stop(); Console.WriteLine("Deserialize #" + i + ": "
                                                + watch.ElapsedMilliseconds / 1000.0 + "s");
            }
        }
Esempio n. 4
0
        public static void Profiling(string[] args)
        {
            ChatRuntime.VERIFY_UNIQUE_CHAT_LABELS = false;

            AppConfig   config     = AppConfig.TAC;
            ISerializer serializer = new SerializerMessagePack();

            ChatRuntime rtOut, rtIn;

            byte[] bytes      = null;
            int    iterations = 10;

            var testfile = AppDomain.CurrentDomain.BaseDirectory;

            testfile += "../../../../dialogic/data/allchats.gs";

            rtIn = new ChatRuntime(config);

            var watch = System.Diagnostics.Stopwatch.StartNew();

            for (int i = 0; i < iterations; i++)
            {
                rtIn.ParseFile(new FileInfo(testfile));
            }
            var numChats = rtIn.Chats().Count;

            watch.Stop(); Console.WriteLine("Parsed " + numChats
                                            + " chats in " + watch.ElapsedMilliseconds / 1000.0 + "s");

            for (int i = 0; i < iterations; i++)
            {
                watch = System.Diagnostics.Stopwatch.StartNew();
                bytes = serializer.ToBytes(rtIn);
                watch.Stop();
                Console.WriteLine("Serialize #" + i + ": "
                                  + watch.ElapsedMilliseconds / 1000.0 + "s");
            }

            for (int i = 0; i < iterations; i++)
            {
                watch = System.Diagnostics.Stopwatch.StartNew();
                rtOut = ChatRuntime.Create(serializer, bytes, config);
                watch.Stop(); Console.WriteLine("Deserialize #" + i + ": "
                                                + watch.ElapsedMilliseconds / 1000.0 + "s");
            }
        }
Esempio n. 5
0
        public static string SendVisualizerResponse(HttpListenerRequest request)
        {
            var testfile = "data/network.gs";
            var html     = PageContent.Replace("%%URL%%", SERVER_URL);
            var labels   = new Dictionary <string, JsonNode>();

            ISerializer serial = new Client.SerializerMessagePack();

            runtime = new ChatRuntime(Client.AppConfig.TAC);
            runtime.ParseFile(new FileInfo(testfile));
            runtime.Chats().ForEach(chat =>
            {
                labels[chat.text] = new JsonNode(chat.text, chat.OutgoingLabels(), chat.ToTree());
                //JsonConvert.SerializeObject(ChatData.Create(chat)));
            });

            var json = NodesToJSON(labels);

            html = html.Replace("%%DATA%%", json);

            Console.WriteLine(json);

            return(html);
        }