コード例 #1
0
        public void AddsAttributesAndKeepCommentsInTack()
        {
            var tree     = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestClassWithXmlComments.cs"));
            var rewriter = new ProtoAttributeAdder();

            var rewrittenRoot = rewriter.Visit(tree.GetRoot());

            var output = rewrittenRoot.GetText().ToString();

            output.Should().Contain("ProtoBuf");
            output.Should().Contain("[ProtoContract]");
            output.Should().Contain("[ProtoMember(1)]");
            output.Should().Contain("[ProtoMember(2)]");

            output.Should().Contain("        /// </value>");
            output.Should().Contain("        [ProtoMember(1)]");
            output.Should().Contain("        public int MyProperty { get; set; }");

            //This verifies spacing is correct
            output.Should().Contain(@"
        /// <summary> Comments not wrapped </summary>
        /// <value> My property. </value>
        [ProtoMember(1)]
        public int MyProperty { get; set; }");
        }
コード例 #2
0
 public ProtoAttributeService(Microsoft.VisualStudio.OLE.Interop.IServiceProvider sp,
                              ProtoAttributeAdder adder, ProtoAttributeRemover remover, ProtoAttributeRewriter rewriter)
 {
     _serviceProvider = sp;
     //TODO: move to an injection
     _adder    = adder;
     _remover  = remover;
     _rewriter = rewriter;
 }
コード例 #3
0
        public void AddsAttributesWithCorrectOrderWhenFileHasWierdFormatting()
        {
            var tree          = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestWierdFormatting.cs"));
            var rewriter      = new ProtoAttributeAdder();
            var rewrittenRoot = rewriter.Visit(tree.GetRoot());

            var output = rewrittenRoot.GetText().ToString();

            output.Should().Contain("ProtoBuf");
            output.Should().Contain("[ProtoContract]");
            output.Should().Contain("[ProtoMember(1)]");
            output.Should().Contain("[ProtoMember(2)]");
        }
コード例 #4
0
        public void AddsAttributesWhenFileIsEnumWithExistingAttributes()
        {
            var tree          = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestEnumWithProtoAttributes.cs"));
            var rewriter      = new ProtoAttributeAdder();
            var rewrittenRoot = rewriter.Visit(tree.GetRoot());

            var output = rewrittenRoot.GetText().ToString();
            var source = output.Split(new string[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

            output.Should().Contain("ProtoBuf");
            output.Should().Contain("[ProtoContract]");
            output.Should().Contain("[ProtoEnum]");
            _fixture.AssertOutputContainsCount(source, "[ProtoEnum]", 5);
        }
コード例 #5
0
        public void AddsUsingWhenNoneExist()
        {
            var tree     = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestClassNoUsings.cs"));
            var rewriter = new ProtoAttributeAdder();

            var rewrittenRoot = rewriter.Visit(tree.GetRoot());

            var output = rewrittenRoot.GetText().ToString();

            output.Should().Contain("ProtoBuf");
            output.Should().Contain("[ProtoContract]");
            output.Should().Contain("[ProtoMember(1)]");
            output.Should().Contain("[ProtoMember(2)]");
        }
コード例 #6
0
        public void AddsAttributesWithCorrectOrderWhenFileHasProtoIgnores()
        {
            var tree          = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestProtoIgnore.cs"));
            var rewriter      = new ProtoAttributeAdder();
            var rewrittenRoot = rewriter.Visit(tree.GetRoot());

            var output = rewrittenRoot.GetText().ToString();
            var source = output.Split(new string[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

            output.Should().Contain("ProtoBuf");
            output.Should().Contain("[ProtoContract]");
            output.Should().Contain("[ProtoMember(1)]");
            output.Should().Contain("[ProtoMember(2)]");
            output.Should().Contain("[ProtoMember(14)]");
            output.Should().Contain("[ProtoMember(16)]");
            _fixture.AssertOutputContainsCount(source, "[ProtoIgnore]", 2);
        }
コード例 #7
0
        public void AddsAttributesForProtBuf_WhenClassWithNoUsings()
        {
            var tree     = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestClassNoUsings.cs"));
            var rewriter = new ProtoAttributeAdder();

            var rewrittenRoot = rewriter.Visit(tree.GetRoot());

            var output = rewrittenRoot.GetText().ToString();

            var source = output.Split(new string[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

            output.Should().Contain("using ProtoBuf;");
            output.Should().Contain("[ProtoContract]");
            output.Should().Contain("[ProtoMember(1)]");
            output.Should().Contain("[ProtoMember(2)]");

            _fixture.AssertOutputContainsCount(source, "ProtoMember", 2);
        }
コード例 #8
0
        public void AddsAttributesForProtBufWherePropDontHaveProtoIgnore()
        {
            var tree          = CSharpSyntaxTree.ParseText(_fixture.LoadTestFile(@"./Mocks/TestCodeWithAttributesAndProtoIgnore.cs"));
            var rewriter      = new ProtoAttributeAdder();
            var rewrittenRoot = rewriter.Visit(tree.GetRoot());

            var output = rewrittenRoot.GetText().ToString();

            var source = output.Split(new string[] { " ", "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

            output.Should().Contain("ProtoBuf");
            output.Should().Contain("[ProtoContract]");
            output.Should().Contain("[Required]");
            output.Should().Contain("[ProtoMember(1)]");
            output.Should().Contain("[ProtoMember(2)]");
            output.Should().Contain("[ProtoMember(3)]");

            _fixture.AssertOutputContainsCount(source, "[ProtoMember", 3);
            _fixture.AssertOutputContainsCount(source, "[Required]", 1);
            _fixture.AssertOutputContainsCount(source, "[ProtoIgnore]", 1);
        }