Beispiel #1
0
        public void Can_change_generic_class_name_and_output()
        {
            string    csharpCode = @"
            [Foo(""Fred"", bar:3, bar2=3.14)] 
            public class Bar<T>
            {
                private int fooish;
                [Bar( bar:42)] 
                public string FooBar() {}
            }           
            ";
            IRoot     root       = RDom.CSharp.Load(csharpCode);
            IClass    class1     = root.RootClasses.First();
            RDomClass class2     = root.RootClasses.First().Copy() as RDomClass;
            string    newCode    = RDom.CSharp.GetSyntaxNode(class2).ToFullString();

            Assert.IsTrue(class1.SameIntent(class2));
            class2.Name = "Bar2";
            Assert.IsFalse(class1.SameIntent(class2));
            Assert.AreEqual("Bar2", class2.Name);
            newCode = RDom.CSharp.GetSyntaxNode(class2).ToFullString();
            string expected = "            [Foo(\"Fred\", bar:3, bar2=3.14)] \r\n            public class Bar2<T>\r\n            {\r\n                private int fooish;\r\n                [Bar( bar:42)] \r\n                public string FooBar() {}\r\n            }           \r\n";

            Assert.AreEqual(expected, newCode);
        }
Beispiel #2
0
        public void Can_change_class_name_and_output()
        {
            string csharpCode =
                @"            [ Foo ( ""Fred"" , bar:3 , bar2=3.14 ) ] 
            public class Bar
            {
                [Bar(bar:42)] 
                public string FooBar() {}
            }";
            IRoot     root   = RDom.CSharp.Load(csharpCode);
            IClass    class1 = root.RootClasses.First();
            RDomClass class2 = root.RootClasses.First().Copy() as RDomClass;

            Assert.IsTrue(class1.SameIntent(class2));
            class2.Name = "Bar2";
            string csharpCodeChanged = csharpCode.ReplaceFirst("class Bar", "class Bar2");

            Assert.IsFalse(class1.SameIntent(class2));
            Assert.AreEqual("Bar2", class2.Name);
            string origCode = RDom.CSharp.GetSyntaxNode(class1).ToFullString();

            Assert.AreEqual(csharpCode, origCode);
            string newCode = RDom.CSharp.GetSyntaxNode(class2).ToFullString();

            Assert.AreEqual(csharpCodeChanged, newCode);
        }
Beispiel #3
0
        public void Can_copy_multi_member_root()
        {
            string    csharpCode = @"
            using System;
            public class Bar{}           
            public struct Bar2{}           
            public enum Bar3{}           
            public interface Bar4{}           
            ";
            RDomRoot  rDomRoot   = RDom.CSharp.Load(csharpCode) as RDomRoot;
            IRoot     rDomRoot2  = rDomRoot.Copy();
            RDomClass class1     = rDomRoot.RootClasses.First() as RDomClass;

            Assert.IsTrue(rDomRoot.SameIntent(rDomRoot2));
        }
Beispiel #4
0
        public void Can_clear_type_params_from_class()
        {
            string    csharpCode = @"
            public class Bar<T1, T2, T3>
            {
                public string FooBar(int bar1, string bar2) {}
            }           
            ";
            IRoot     root       = RDom.CSharp.Load(csharpCode);
            RDomClass class1     = root.RootClasses.First() as RDomClass;

            Assert.AreEqual(3, class1.TypeParameters.Count());
            class1.TypeParameters.Clear();
            Assert.AreEqual(0, class1.TypeParameters.Count());
        }
Beispiel #5
0
        public void Can_remove_member_from_class()
        {
            string    csharpCode = @"
            public class Bar<T1, T2, T3>
            {
                private int foo;
                public string FooBar(int bar1, string bar2) {}
            }           
            ";
            IRoot     root       = RDom.CSharp.Load(csharpCode);
            RDomClass class1     = root.RootClasses.First() as RDomClass;

            Assert.AreEqual(2, class1.Members.Count());
            class1.MembersAll.Clear();
            Assert.AreEqual(0, class1.Members.Count());
        }
Beispiel #6
0
        public void Can_remove_type_params_from_class()
        {
            string         csharpCode = @"
            public class Bar<T1, T2, T3>
            {
                public string FooBar(int bar1, string bar2) {}
            }           
            ";
            IRoot          root       = RDom.CSharp.Load(csharpCode);
            RDomClass      class1     = root.RootClasses.First() as RDomClass;
            ITypeParameter param      = class1.TypeParameters.Skip(1).First();

            Assert.AreEqual(3, class1.TypeParameters.Count());
            class1.TypeParameters.Remove(param);
            Assert.AreEqual(2, class1.TypeParameters.Count());
            Assert.AreEqual("T1", class1.TypeParameters.First().Name);
            Assert.AreEqual("T3", class1.TypeParameters.Last().Name);
        }
Beispiel #7
0
        public void Can_add_copied_method_to_class()
        {
            string    csharpCode = @"
            [Foo(""Fred"", bar:3, bar2:""George"")] 
            public class Bar
            {
                public string FooBar() {}
            }           
            ";
            IRoot     root       = RDom.CSharp.Load(csharpCode);
            RDomClass rDomClass  = root.RootClasses.First() as RDomClass;
            IMethod   method1    = rDomClass.Methods.First();
            IMethod   method2    = method1.Copy();

            rDomClass.MembersAll.AddOrMove(method2);
            IMethod[] methods = rDomClass.Methods.ToArray();
            Assert.AreEqual(2, methods.Count());
            Assert.IsFalse(methods[0] == methods[1]); // reference equality fails
            Assert.IsTrue(methods[0].SameIntent(methods[1]));
        }