Esempio n. 1
0
        public void SaveAsync()
        {
            var blocker = new AutoResetEvent(false);

            var file  = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + Util.EpochMs() + ".ser");
            var lines = new[] {
                "CHAT switch {type=a,stage=b,other=c}",
                "SAY async",
            };
            ChatRuntime rt = new ChatRuntime(Client.AppConfig.TAC);

            rt.ParseText(String.Join("\n", lines));
            rt.SaveAsync(serializer, file, (bytes) =>
            {
                blocker.Set();
                //Console.WriteLine("CB: " + (bytes != null ? bytes.Length + " bytes" : "Failed"));
                Assert.That(bytes, Is.Not.Null);
                Assert.That(bytes.Length, Is.GreaterThan(0));

                // create a new runtime from the bytes
                var rt2 = ChatRuntime.Create(serializer, bytes, AppConfig.TAC);

                // and verify they are the same
                CheckEquals(rt, rt2);
            });

            blocker.WaitOne();
        }
Esempio n. 2
0
        public void SaveMultipleAsync()
        {
            var blocker1 = new AutoResetEvent(false);
            var file1    = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + Util.EpochMs() + ".ser");
            var lines1   = new[] {
                "CHAT switch {type=a1,stage=b1,other=async1}",
                "SAY async1",
            };
            ChatRuntime rt1 = new ChatRuntime(Client.AppConfig.TAC);

            rt1.ParseText(String.Join("\n", lines1));


            //var blocker2 = new AutoResetEvent(false);
            var file2  = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + Util.EpochMs() + ".ser");
            var lines2 = new[] {
                "CHAT switch2 {type=a2,stage=2,other=async2}",
                "DO #flip",
                "SAY async2",
            };
            ChatRuntime rt2 = new ChatRuntime(Client.AppConfig.TAC);

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


            rt1.SaveAsync(serializer, file1, (bytes) =>
            {
                Thread.Sleep(50);
                blocker1.Set();
                //Console.WriteLine("CB1: " + (bytes != null ? bytes.Length + " bytes" : "Failed"));
                Assert.That(bytes, Is.Not.Null);
                Assert.That(bytes.Length, Is.GreaterThan(0));

                // create a new runtime from the bytes
                var rtDeser1 = ChatRuntime.Create(serializer, bytes, AppConfig.TAC);

                // and verify they are the same
                CheckEquals(rt1, rtDeser1);
            });

            rt2.SaveAsync(serializer, file2, (bytes) =>
            {
                //blocker2.Set();
                //Console.WriteLine("CB2: " + (bytes != null ? bytes.Length + " bytes" : "Failed"));
                Assert.That(bytes, Is.Not.Null);
                Assert.That(bytes.Length, Is.GreaterThan(0));

                // create a new runtime from the bytes
                var rtDeser2 = ChatRuntime.Create(serializer, bytes, AppConfig.TAC);

                // and verify they are the same
                CheckEquals(rt2, rtDeser2);
            });

            blocker1.WaitOne();
            //blocker2.WaitOne();
        }