public DataAnnoAttributeService(Microsoft.VisualStudio.OLE.Interop.IServiceProvider sp, DataAttributeAdder adder, DataAttributeRemover remover, DataAttributeRewriter rewriter) { _serviceProvider = sp; //TODO: move to an injection _adder = adder; _remover = remover; _rewriter = rewriter; }
public void RewritesAttributesWithOrderPropertyWhenMissing() { var tree = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestCodeWithDataMemberAttributesMissingOrderProperties.cs")); var rewriter = new DataAttributeRewriter(); var rewrittenRoot = rewriter.Visit(tree.GetRoot()); var output = rewrittenRoot.GetText().ToString(); var source = output.Split(new string[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries); output.Should().Contain("System.Runtime.Serialization"); output.Should().Contain("[DataContract]"); _fixture.AssertOutputContainsCount(source, "Order", 5); //includes 1 for the name of class }
public void RewritesEnumAttributesWhenFileHasDataMemeberIgnores() { var tree = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestEnumWithDataMemberIgnore.cs")); var rewriter = new DataAttributeRewriter(); var rewrittenRoot = rewriter.Visit(tree.GetRoot()); var output = rewrittenRoot.GetText().ToString(); var source = output.Split(new string[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries); output.Should().Contain("System.Runtime.Serialization"); output.Should().Contain("[DataContract]"); _fixture.AssertOutputContainsCount(source, "[IgnoreDataMember]", 2); _fixture.AssertOutputContainsCount(source, "[EnumMember]", 3); }
public void RewritesAttributesWithCorrectOrderWhenAttributesAlreadyExists() { var tree = CSharpSyntaxTree.ParseText(_codeWithAttributes); var rewriter = new DataAttributeRewriter(); var rewrittenRoot = rewriter.Visit(tree.GetRoot()); var output = rewrittenRoot.GetText().ToString(); output.Should().Contain("System.Runtime.Serialization"); output.Should().Contain("[DataContract]"); output.Should().Contain(@"[DataMember(Order = 1, Name=""Test"")]"); output.Should().Contain("[DataMember(Order = 2)]"); output.Should().Contain("[DataMember(Order = 3)]"); output.Should().Contain("[DataMember(Order = 4)]"); }
public void RewritesAttributesWithCorrectOrderWhenAttributeExistsWithoutOrderProperty() { var tree = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestMissingOrderPropertyAndWeirdSpacing.cs")); var rewriter = new DataAttributeRewriter(); var rewrittenRoot = rewriter.Visit(tree.GetRoot()); var output = rewrittenRoot.GetText().ToString(); var source = output.Split(new string[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries); output.Should().Contain("System.Runtime.Serialization"); output.Should().Contain("[DataContract]"); output.Should().Contain("[DataMember(Order = 1)]"); output.Should().Contain("[DataMember(Order = 2)]"); output.Should().Contain(@"[DataMember(Name =""test"",Order = 3)]"); output.Should().Contain("[DataMember(Order = 4)]"); _fixture.AssertOutputContainsCount(source, "[IgnoreDataMember]", 1); }