public void RoundTripSyntaxNodeWithDiagnostics() { var text = "public class C {"; var tree = SyntaxFactory.ParseSyntaxTree(text); var root = tree.GetCompilationUnitRoot(); Assert.Equal(1, root.Errors().Length); var stream = new MemoryStream(); root.SerializeTo(stream); stream.Position = 0; var droot = CSharpSyntaxNode.DeserializeFrom(stream); var dtext = droot.ToFullString(); Assert.Equal(text, dtext); Assert.Equal(1, droot.Errors().Length); Assert.Equal(true, droot.IsEquivalentTo(tree.GetCompilationUnitRoot())); Assert.Equal(root.Errors()[0].GetMessage(), droot.Errors()[0].GetMessage()); }
public void RoundTripSyntaxNodeWithMultipleReferencesToSameAnnotation() { var text = "public class C {}"; var tree = SyntaxFactory.ParseSyntaxTree(text); var annotation = new SyntaxAnnotation(); var root = tree.GetCompilationUnitRoot().WithAdditionalAnnotations(annotation, annotation); Assert.Equal(true, root.ContainsAnnotations); Assert.Equal(true, root.HasAnnotation(annotation)); var stream = new MemoryStream(); root.SerializeTo(stream); stream.Position = 0; var droot = CSharpSyntaxNode.DeserializeFrom(stream); var dtext = droot.ToFullString(); Assert.Equal(text, dtext); Assert.Equal(true, droot.ContainsAnnotations); Assert.Equal(true, droot.HasAnnotation(annotation)); Assert.Equal(true, droot.IsEquivalentTo(tree.GetCompilationUnitRoot())); }