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); }
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); }
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)); }
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()); }
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()); }
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); }
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])); }