// Write item, then read back and return size diagnostics instead of round-tripped instance public static TreeDiagnostics Diagnostics <T>(T value, Func <T> buildT, TreeFormat format) where T : ITreeSerializable { TreeSerializationSettings settings = new TreeSerializationSettings() { LeaveStreamOpen = true }; using (MemoryStream stream = new MemoryStream()) { using (ITreeWriter writer = Writer(format, stream, settings)) { value.Write(writer); } stream.Seek(0, SeekOrigin.Begin); using (TreeDiagnosticsReader reader = new TreeDiagnosticsReader(Reader(format, stream, settings))) { T roundTripped = buildT(); roundTripped.Read(reader); // Test double dispose reader.Dispose(); return(reader.Tree); } } }
public static TreeDiagnostics Diagnostics(System.IO.Stream stream) { using (BinaryTreeReader btr = new BinaryTreeReader(stream)) using (TreeDiagnosticsReader reader = new TreeDiagnosticsReader(btr)) { FileSystem result = new FileSystem(); result.DB.Read(reader); return(reader.Tree); } }