public void CanWriteAndRecoverUShort(ushort testData) { using var s = new MemoryStream(); using var inStream = new Df2Stream(s, StreamMode.Write, true); inStream.CommandSend += cmd => Out.WriteLine($"WRITE> {cmd}"); var group = inStream.GetOrAddGroup("TestGroup"); group.AddOrUpdate("TestData", testData); inStream.Flush(); inStream.Close(); Out.WriteLine($"Data: {Encoding.UTF8.GetString(s.ToArray())} ({BitConverter.ToString(s.ToArray())})"); s.Seek(0, SeekOrigin.Begin); using var outStream = new Df2Stream(s, StreamMode.Read); outStream.CommandReceive += msg => Out.WriteLine("READ> " + msg); outStream.ProcessUntilEnd(); Assert.Equal(testData, outStream.Values["TestGroup"]["TestData"].AsUShort()); }
public void CanWriteAndRecoverStringArray(string[] testData) { using var s = new MemoryStream(); using var inStream = new Df2Stream(s, StreamMode.Write, true); var group = inStream.GetOrAddGroup("TestGroup"); inStream.CommandSend += msg => Out.WriteLine("WRITE> " + msg); group.AddOrUpdate("TestData", testData); inStream.Flush(); inStream.Close(); Out.WriteLine($"Data: {Encoding.UTF8.GetString(s.ToArray())} ({BitConverter.ToString(s.ToArray())})"); s.Seek(0, SeekOrigin.Begin); using var outStream = new Df2Stream(s, StreamMode.Read); outStream.CommandReceive += msg => Out.WriteLine("READ> " + msg); outStream.ProcessUntilEnd(); Assert.Equal(testData, outStream.Values["TestGroup"]["TestData"].AsArray <string>()); using var msFinal = new MemoryStream(); using var finalStream = new Df2Stream(msFinal, StreamMode.Write); var gotRemove = false; finalStream.CommandSend += finalMsg => { if (finalMsg.StartsWith("Remove")) { gotRemove = true; } Out.WriteLine($"SECOND WRITE> {finalMsg}"); }; outStream.CopyTo(finalStream); finalStream.Remove("TestGroup"); finalStream.Flush(); Out.WriteLine($"{Encoding.UTF8.GetString(msFinal.ToArray())} ({BitConverter.ToString(msFinal.ToArray())})"); Assert.True(gotRemove); msFinal.Seek(0, SeekOrigin.Begin); using var finalReadStream = new Df2Stream(msFinal, StreamMode.Read); finalReadStream.CommandReceive += msg => Out.WriteLine($"SECOND READ> {msg}"); finalReadStream.ProcessUntilEnd(); Assert.False(finalReadStream.Values.ContainsKey("TestGroup")); }