Ejemplo n.º 1
0
        public void Issue_88_generated_class_results_in_uncompilable_code()
        {
            var csharpCode = @"using RoslynDom.Common;
namespace Company.Core
   {
      public class className
      {
      }
   }";

            IRoot root       = RDom.CSharp.Load(csharpCode);
            var   firstClass = root.RootClasses.First();

            firstClass.Name = "Product";

            var backerField = new RDomField(name: "mRevisions", returnTypeName: "StringField");

            firstClass.AddOrMoveMember(backerField);
            var property = new RDomProperty(name: "Revisions", propertyTypeName: "string", declaredAccessModifier: AccessModifier.Public, isVirtual: true);

            firstClass.AddOrMoveMember(property);

            var formatted = RDom.CSharp.GetFormattedSourceCode(root);
            var expected  = "using RoslynDom.Common;\r\nnamespace Company.Core\r\n{\r\n    public class Product\r\n    {\r\n        private StringField mRevisions;\r\n        public virtual string Revisions { private get; private set; }\r\n    }\r\n}";

            Assert.AreEqual(expected, formatted);
        }
Ejemplo n.º 2
0
        private static void FixWhitespace(RDomField field, IProperty prop)
        {
            // TODO: This is rather detailed because of featuresnot yet in the whitespace system
            var leading = prop.Whitespace2Set[LanguageElement.Public].LeadingWhitespace;

            field.Whitespace2Set[LanguageElement.Private] = new Whitespace2(LanguageElement.Private, leading, " ", "");
        }
Ejemplo n.º 3
0
        private static string AddFieldForProperty(IProperty prop)
        {
            // Add the field without further checks because the programmer will find and resolve
            // things like naming collisions
            var parent    = prop.Parent as ITypeMemberContainer;
            var fieldName = (prop.Name.StartsWith("_") ? "" : "_") + StringUtilities.CamelCase(prop.Name);
            var field     = new RDomField(fieldName, prop.ReturnType, declaredAccessModifier: AccessModifier.Private);

            FixWhitespace(field, prop);
            field.Whitespace2Set.Add(new Whitespace2(prop.Whitespace2Set.First().Copy()));
            parent.MembersAll.InsertOrMoveBefore(prop, field);
            return(fieldName);
        }
Ejemplo n.º 4
0
        public void Issue_88_generated_class_results_in_uncompilable_code()
        {
            var csharpCode = @"using RoslynDom.Common;
            namespace Company.Core
               {
              public class className
              {
              }
               }";

             IRoot root = RDom.CSharp.Load(csharpCode);
             var firstClass = root.RootClasses.First();
             firstClass.Name = "Product";

             var backerField = new RDomField(name: "mRevisions", returnTypeName: "StringField");
             firstClass.AddOrMoveMember(backerField);
             var property = new RDomProperty(name: "Revisions", propertyTypeName: "string", declaredAccessModifier: AccessModifier.Public, isVirtual: true);
             firstClass.AddOrMoveMember(property);

             var formatted = RDom.CSharp.GetFormattedSourceCode(root);
             var expected = "using RoslynDom.Common;\r\nnamespace Company.Core\r\n{\r\n    public class Product\r\n    {\r\n        private StringField mRevisions;\r\n        public virtual string Revisions { private get; private set; }\r\n    }\r\n}";
             Assert.AreEqual(expected, formatted);
        }