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(); }
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(); }