Example #1
0
        public void TestCompoundClassAttributes()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					[TestAttribute1, Test1.Test2.TestAttribute2]
					[TestAttribute3]
					public class TestClass
					{
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(1, classList.Count);
            var classObject = classList[0];

            Assert.AreEqual(3, classObject.AttributeList.Count);

            Assert.AreEqual("TestAttribute1", classObject.AttributeList[0].TypeName);
            Assert.IsNullOrEmpty(classObject.AttributeList[0].TypeNamespace);
            Assert.AreEqual("TestAttribute1", classObject.AttributeList[0].TypeFullName);

            Assert.AreEqual("TestAttribute2", classObject.AttributeList[1].TypeName);
            Assert.AreEqual("Test1.Test2", classObject.AttributeList[1].TypeNamespace);
            Assert.AreEqual("Test1.Test2.TestAttribute2", classObject.AttributeList[1].TypeFullName);

            Assert.AreEqual("TestAttribute3", classObject.AttributeList[2].TypeName);
            Assert.IsNullOrEmpty(classObject.AttributeList[2].TypeNamespace);
            Assert.AreEqual("TestAttribute3", classObject.AttributeList[2].TypeFullName);
        }
Example #2
0
        public void TestPropertyTypes()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public Test123 Property1 { get; set; }
						public Test.Test.Test1 Property2 { get; set; }
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(1, classList.Count);
            var classObject = classList[0];

            Assert.AreEqual(2, classObject.PropertyList.Count);

            Assert.AreEqual("Property1", classObject.PropertyList[0].PropertyName);
            Assert.AreEqual("Test123", classObject.PropertyList[0].TypeName);
            Assert.IsNullOrEmpty(classObject.PropertyList[0].TypeNamespace);
            Assert.AreEqual("Test123", classObject.PropertyList[0].TypeFullName);

            Assert.AreEqual("Property2", classObject.PropertyList[1].PropertyName);
            Assert.AreEqual("Test1", classObject.PropertyList[1].TypeName);
            Assert.AreEqual("Test.Test", classObject.PropertyList[1].TypeNamespace);
            Assert.AreEqual("Test.Test.Test1", classObject.PropertyList[1].TypeFullName);
        }
Example #3
0
        public void TestFields()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public int TestField1 = 1;
						private string TestField2 = ""abc"";
						internal Test1.Test2.TestType TestField3;
						protected int TestField4;
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(1, classList.Count);
            var classObject = classList[0];

            Assert.IsEmpty(classObject.PropertyList);
            Assert.AreEqual(4, classObject.FieldList.Count);

            Assert.AreEqual("TestField1", classObject.FieldList[0].FieldName);
            Assert.AreEqual("int", classObject.FieldList[0].TypeName);
            Assert.IsNullOrEmpty(classObject.FieldList[0].TypeNamespace);
            Assert.AreEqual("int", classObject.FieldList[0].TypeFullName);
            Assert.AreEqual(EnumProtectionLevel.Public, classObject.FieldList[0].ProtectionLevel);

            Assert.AreEqual("TestField2", classObject.FieldList[1].FieldName);
            Assert.AreEqual("string", classObject.FieldList[1].TypeName);
            Assert.IsNullOrEmpty(classObject.FieldList[1].TypeNamespace);
            Assert.AreEqual("string", classObject.FieldList[1].TypeFullName);
            Assert.AreEqual(EnumProtectionLevel.Private, classObject.FieldList[1].ProtectionLevel);

            Assert.AreEqual("TestField3", classObject.FieldList[2].FieldName);
            Assert.AreEqual("TestType", classObject.FieldList[2].TypeName);
            Assert.AreEqual("Test1.Test2", classObject.FieldList[2].TypeNamespace);
            Assert.AreEqual("Test1.Test2.TestType", classObject.FieldList[2].TypeFullName);
            Assert.AreEqual(EnumProtectionLevel.Internal, classObject.FieldList[2].ProtectionLevel);

            Assert.AreEqual("TestField4", classObject.FieldList[3].FieldName);
            Assert.AreEqual("int", classObject.FieldList[3].TypeName);
            Assert.IsNullOrEmpty(classObject.FieldList[3].TypeNamespace);
            Assert.AreEqual("int", classObject.FieldList[3].TypeFullName);
            Assert.AreEqual(EnumProtectionLevel.Protected, classObject.FieldList[3].ProtectionLevel);

            Assert.AreEqual("TestField2", classObject.FieldList[1].FieldName);
            Assert.AreEqual("string", classObject.FieldList[1].TypeName);
            Assert.IsNullOrEmpty(classObject.FieldList[1].TypeNamespace);
            Assert.AreEqual("string", classObject.FieldList[1].TypeFullName);
            Assert.AreEqual(EnumProtectionLevel.Private, classObject.FieldList[1].ProtectionLevel);
        }
Example #4
0
        public void TestPropertyAttributes()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public string Property1 { get; set; }

						[TestAttribute1]
						public int Property2 { get; set; }

						[TestAttribute2]
						[TestAttribute3, Test.Test.TestAttribute4]
						public float Property3 { get; set; }
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(1, classList.Count);
            var classObject = classList[0];

            Assert.AreEqual(3, classObject.PropertyList.Count);

            Assert.AreEqual("Property1", classObject.PropertyList[0].PropertyName);
            Assert.IsEmpty(classObject.PropertyList[0].AttributeList);

            Assert.AreEqual("Property2", classObject.PropertyList[1].PropertyName);
            Assert.AreEqual(1, classObject.PropertyList[1].AttributeList.Count);
            Assert.AreEqual("TestAttribute1", classObject.PropertyList[1].AttributeList[0].TypeName);
            Assert.IsNullOrEmpty(classObject.PropertyList[1].AttributeList[0].TypeNamespace);
            Assert.AreEqual("TestAttribute1", classObject.PropertyList[1].AttributeList[0].TypeFullName);

            Assert.AreEqual("Property3", classObject.PropertyList[2].PropertyName);
            Assert.AreEqual(3, classObject.PropertyList[2].AttributeList.Count);
            Assert.AreEqual("TestAttribute2", classObject.PropertyList[2].AttributeList[0].TypeName);
            Assert.IsNullOrEmpty(classObject.PropertyList[2].AttributeList[0].TypeNamespace);
            Assert.AreEqual("TestAttribute2", classObject.PropertyList[2].AttributeList[0].TypeFullName);
            Assert.AreEqual("TestAttribute3", classObject.PropertyList[2].AttributeList[1].TypeName);
            Assert.IsNullOrEmpty(classObject.PropertyList[2].AttributeList[1].TypeNamespace);
            Assert.AreEqual("TestAttribute3", classObject.PropertyList[2].AttributeList[1].TypeFullName);
            Assert.AreEqual("TestAttribute4", classObject.PropertyList[2].AttributeList[2].TypeName);
            Assert.AreEqual("Test.Test", classObject.PropertyList[2].AttributeList[2].TypeNamespace);
            Assert.AreEqual("Test.Test.TestAttribute4", classObject.PropertyList[2].AttributeList[2].TypeFullName);
        }
Example #5
0
        public void TestFieldAttributes()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public string Field1;

						[TestAttribute1]
						public int Field2;

						[TestAttribute2]
						[TestAttribute3, Test.Test.TestAttribute4]
						public float Field3;
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(1, classList.Count);
            var classObject = classList[0];

            Assert.AreEqual(3, classObject.FieldList.Count);

            Assert.AreEqual("Field1", classObject.FieldList[0].FieldName);
            Assert.IsEmpty(classObject.FieldList[0].AttributeList);

            Assert.AreEqual("Field2", classObject.FieldList[1].FieldName);
            Assert.AreEqual(1, classObject.FieldList[1].AttributeList.Count);
            Assert.AreEqual("TestAttribute1", classObject.FieldList[1].AttributeList[0].TypeName);
            Assert.IsNullOrEmpty(classObject.FieldList[1].AttributeList[0].TypeNamespace);
            Assert.AreEqual("TestAttribute1", classObject.FieldList[1].AttributeList[0].TypeFullName);

            Assert.AreEqual("Field3", classObject.FieldList[2].FieldName);
            Assert.AreEqual(3, classObject.FieldList[2].AttributeList.Count);
            Assert.AreEqual("TestAttribute2", classObject.FieldList[2].AttributeList[0].TypeName);
            Assert.IsNullOrEmpty(classObject.FieldList[2].AttributeList[0].TypeNamespace);
            Assert.AreEqual("TestAttribute2", classObject.FieldList[2].AttributeList[0].TypeFullName);
            Assert.AreEqual("TestAttribute3", classObject.FieldList[2].AttributeList[1].TypeName);
            Assert.IsNullOrEmpty(classObject.FieldList[2].AttributeList[1].TypeNamespace);
            Assert.AreEqual("TestAttribute3", classObject.FieldList[2].AttributeList[1].TypeFullName);
            Assert.AreEqual("TestAttribute4", classObject.FieldList[2].AttributeList[2].TypeName);
            Assert.AreEqual("Test.Test", classObject.FieldList[2].AttributeList[2].TypeNamespace);
            Assert.AreEqual("Test.Test.TestAttribute4", classObject.FieldList[2].AttributeList[2].TypeFullName);
        }
Example #6
0
        public void TestPropertyProtectionLevel()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						private int PrivateProperty1 { get; set; }
						int PrivateProperty2 { get; set; }

						public int PublicProperty1 { get; set; }

						protected int ProtectedProperty1 { get; set; }

						internal int InternalProperty1 { get; set; }
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(1, classList.Count);
            var classObject = classList[0];

            Assert.AreEqual(5, classObject.PropertyList.Count);

            Assert.AreEqual("PrivateProperty1", classObject.PropertyList[0].PropertyName);
            Assert.AreEqual(EnumProtectionLevel.Private, classObject.PropertyList[0].ProtectionLevel);

            Assert.AreEqual("PrivateProperty2", classObject.PropertyList[1].PropertyName);
            Assert.AreEqual(EnumProtectionLevel.Private, classObject.PropertyList[1].ProtectionLevel);

            Assert.AreEqual("PublicProperty1", classObject.PropertyList[2].PropertyName);
            Assert.AreEqual(EnumProtectionLevel.Public, classObject.PropertyList[2].ProtectionLevel);

            Assert.AreEqual("ProtectedProperty1", classObject.PropertyList[3].PropertyName);
            Assert.AreEqual(EnumProtectionLevel.Protected, classObject.PropertyList[3].ProtectionLevel);

            Assert.AreEqual("InternalProperty1", classObject.PropertyList[4].PropertyName);
            Assert.AreEqual(EnumProtectionLevel.Internal, classObject.PropertyList[4].ProtectionLevel);
        }
Example #7
0
        public void TestClassProtectionLevel()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					public class PublicClass
					{
					}

					private class PrivateClass
					{
					}

					internal class InternalClass
					{
					}

					protected class ProtectedClass
					{
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(4, classList.Count);

            Assert.AreEqual("PublicClass", classList[0].ClassName);
            Assert.AreEqual(EnumProtectionLevel.Public, classList[0].ProtectionLevel);

            Assert.AreEqual("PrivateClass", classList[1].ClassName);
            Assert.AreEqual(EnumProtectionLevel.Private, classList[1].ProtectionLevel);

            Assert.AreEqual("InternalClass", classList[2].ClassName);
            Assert.AreEqual(EnumProtectionLevel.Internal, classList[2].ProtectionLevel);

            Assert.AreEqual("ProtectedClass", classList[3].ClassName);
            Assert.AreEqual(EnumProtectionLevel.Protected, classList[3].ProtectionLevel);
        }
Example #8
0
		public void TestBasicClass()
		{
			string data = 
			@"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(1, classList.Count);
			var classObject = classList[0];
			Assert.AreEqual("Test.Namespace", classObject.NamespaceName);
			Assert.AreEqual("TestClass", classObject.ClassName);
			Assert.AreEqual("Test.Namespace.TestClass", classObject.ClassFullName);
		}		
Example #9
0
        public void TestCompoundFields()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public string Field1 = ""abc"";
						public int Field2, Field3=4;
						public double Field5;
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(1, classList.Count);
            var classObject = classList[0];

            Assert.AreEqual(4, classObject.FieldList.Count);

            Assert.AreEqual("Field1", classObject.FieldList[0].FieldName);
            Assert.AreEqual("string", classObject.FieldList[0].TypeFullName);
            Assert.AreEqual("abc", classObject.FieldList[0].FieldValue);

            Assert.AreEqual("Field2", classObject.FieldList[1].FieldName);
            Assert.AreEqual("int", classObject.FieldList[1].TypeFullName);
            Assert.IsNull(classObject.FieldList[1].FieldValue);

            Assert.AreEqual("Field3", classObject.FieldList[2].FieldName);
            Assert.AreEqual("int", classObject.FieldList[2].TypeFullName);
            Assert.AreEqual(4, classObject.FieldList[2].FieldValue);

            Assert.AreEqual("Field5", classObject.FieldList[3].FieldName);
            Assert.AreEqual("double", classObject.FieldList[3].TypeFullName);
            Assert.IsNull(classObject.FieldList[3].FieldValue);
        }
Example #10
0
        public void TestBasicClass()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(1, classList.Count);
            var classObject = classList[0];

            Assert.AreEqual("Test.Namespace", classObject.NamespaceName);
            Assert.AreEqual("TestClass", classObject.ClassName);
            Assert.AreEqual("Test.Namespace.TestClass", classObject.ClassFullName);
        }
Example #11
0
        public void UpdateExistingClass()
        {
            var existingClass1 = new CSClass()
            {
                ClassName     = "TestClassLeaveAlone",
                NamespaceName = "Test.Namespace",
                PropertyList  = new List <CSProperty>()
                {
                    new CSProperty {
                        TypeName = "int", PropertyName = "TestProperty1"
                    },
                    new CSProperty {
                        TypeName = "int", PropertyName = "TestProperty2"
                    }
                },
                FieldList = new List <CSField>()
                {
                    new CSField {
                        TypeName = "int", FieldName = "TestField1"
                    },
                    new CSField {
                        TypeName = "int", FieldName = "TestField2"
                    }
                }
            };
            var existingClass2 = new CSClass()
            {
                ClassName     = "TestClassUpdate",
                NamespaceName = "Test.Namespace",
                PropertyList  = new List <CSProperty>()
                {
                    new CSProperty {
                        TypeName = "int", PropertyName = "TestProperty1"
                    },
                    new CSProperty {
                        TypeName = "int", PropertyName = "TestProperty2"
                    }
                },
                FieldList = new List <CSField>()
                {
                    new CSField {
                        TypeName = "int", FieldName = "TestField1"
                    },
                    new CSField {
                        TypeName = "int", FieldName = "TestField2"
                    }
                }
            };
            List <CSClass> existingClassList = new List <CSClass>()
            {
                existingClass1, existingClass2
            };
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					public class TestClassUpdate
					{
						public int TestProperty3 { get; set; }
						public int TestProperty4 { get; set; }

						public int TestField3;
						public int TestField4;
					}
					public class TestClassNew
					{
						public int TestProperty1 { get; set; }
						public int TestProperty2 { get; set; }

						public int TestField1;
						public int TestField2;
					}
				}
			"            ;
            ClassParser parser       = new ClassParser();
            var         newClassList = parser.ParseString(data, "TestFile.cs", "C:\\Test", existingClassList);

            Assert.AreEqual(3, newClassList.Count);

            var testClassLeaveAlone = newClassList[0];

            Assert.AreEqual("Test.Namespace.TestClassLeaveAlone", testClassLeaveAlone.ClassFullName);
            Assert.AreEqual(2, testClassLeaveAlone.PropertyList.Count);
            Assert.AreEqual("TestProperty1", testClassLeaveAlone.PropertyList[0].PropertyName);
            Assert.AreEqual("TestProperty2", testClassLeaveAlone.PropertyList[1].PropertyName);
            Assert.AreEqual(2, testClassLeaveAlone.FieldList.Count);
            Assert.AreEqual("TestField1", testClassLeaveAlone.FieldList[0].FieldName);
            Assert.AreEqual("TestField2", testClassLeaveAlone.FieldList[1].FieldName);

            var testClassUpdate = newClassList[1];

            Assert.AreEqual("Test.Namespace.TestClassUpdate", testClassUpdate.ClassFullName);
            Assert.AreEqual(4, testClassUpdate.PropertyList.Count);
            Assert.AreEqual("TestProperty1", testClassUpdate.PropertyList[0].PropertyName);
            Assert.AreEqual("TestProperty2", testClassUpdate.PropertyList[1].PropertyName);
            Assert.AreEqual("TestProperty3", testClassUpdate.PropertyList[2].PropertyName);
            Assert.AreEqual("TestProperty4", testClassUpdate.PropertyList[3].PropertyName);
            Assert.AreEqual(4, testClassUpdate.FieldList.Count);
            Assert.AreEqual("TestField1", testClassUpdate.FieldList[0].FieldName);
            Assert.AreEqual("TestField2", testClassUpdate.FieldList[1].FieldName);
            Assert.AreEqual("TestField3", testClassUpdate.FieldList[2].FieldName);
            Assert.AreEqual("TestField4", testClassUpdate.FieldList[3].FieldName);

            var testClassNew = newClassList[2];

            Assert.AreEqual("Test.Namespace.TestClassNew", testClassNew.ClassFullName);
            Assert.AreEqual(2, testClassNew.PropertyList.Count);
            Assert.AreEqual("TestProperty1", testClassNew.PropertyList[0].PropertyName);
            Assert.AreEqual("TestProperty2", testClassNew.PropertyList[1].PropertyName);
            Assert.AreEqual(2, testClassNew.FieldList.Count);
            Assert.AreEqual("TestField1", testClassNew.FieldList[0].FieldName);
            Assert.AreEqual("TestField2", testClassNew.FieldList[1].FieldName);
        }
Example #12
0
		public void TestCompoundClassAttributes()
		{
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					[TestAttribute1, Test1.Test2.TestAttribute2]
					[TestAttribute3]
					public class TestClass
					{
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(1, classList.Count);
			var classObject = classList[0];
			Assert.AreEqual(3, classObject.AttributeList.Count);

			Assert.AreEqual("TestAttribute1", classObject.AttributeList[0].TypeName);
			Assert.IsNullOrEmpty(classObject.AttributeList[0].TypeNamespace);
			Assert.AreEqual("TestAttribute1", classObject.AttributeList[0].TypeFullName);

			Assert.AreEqual("TestAttribute2", classObject.AttributeList[1].TypeName);
			Assert.AreEqual("Test1.Test2", classObject.AttributeList[1].TypeNamespace);
			Assert.AreEqual("Test1.Test2.TestAttribute2", classObject.AttributeList[1].TypeFullName);

			Assert.AreEqual("TestAttribute3", classObject.AttributeList[2].TypeName);
			Assert.IsNullOrEmpty(classObject.AttributeList[2].TypeNamespace);
			Assert.AreEqual("TestAttribute3", classObject.AttributeList[2].TypeFullName);
		}
Example #13
0
		public void TestPropertyTypes()
		{
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public Test123 Property1 { get; set; }
						public Test.Test.Test1 Property2 { get; set; }
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(1, classList.Count);
			var classObject = classList[0];
			Assert.AreEqual(2, classObject.PropertyList.Count);
			
			Assert.AreEqual("Property1", classObject.PropertyList[0].PropertyName);
			Assert.AreEqual("Test123", classObject.PropertyList[0].TypeName);
			Assert.IsNullOrEmpty(classObject.PropertyList[0].TypeNamespace);
			Assert.AreEqual("Test123", classObject.PropertyList[0].TypeFullName);

			Assert.AreEqual("Property2", classObject.PropertyList[1].PropertyName);
			Assert.AreEqual("Test1", classObject.PropertyList[1].TypeName);
			Assert.AreEqual("Test.Test", classObject.PropertyList[1].TypeNamespace);
			Assert.AreEqual("Test.Test.Test1", classObject.PropertyList[1].TypeFullName);
		}
Example #14
0
		public void TestPropertyAttributes()
		{
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public string Property1 { get; set; }

						[TestAttribute1]
						public int Property2 { get; set; }

						[TestAttribute2]
						[TestAttribute3, Test.Test.TestAttribute4]
						public float Property3 { get; set; }
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(1, classList.Count);
			var classObject = classList[0];
			Assert.AreEqual(3, classObject.PropertyList.Count);

			Assert.AreEqual("Property1", classObject.PropertyList[0].PropertyName);
			Assert.IsEmpty(classObject.PropertyList[0].AttributeList);

			Assert.AreEqual("Property2", classObject.PropertyList[1].PropertyName);
			Assert.AreEqual(1, classObject.PropertyList[1].AttributeList.Count);
			Assert.AreEqual("TestAttribute1", classObject.PropertyList[1].AttributeList[0].TypeName);
			Assert.IsNullOrEmpty(classObject.PropertyList[1].AttributeList[0].TypeNamespace);
			Assert.AreEqual("TestAttribute1", classObject.PropertyList[1].AttributeList[0].TypeFullName);

			Assert.AreEqual("Property3", classObject.PropertyList[2].PropertyName);
			Assert.AreEqual(3, classObject.PropertyList[2].AttributeList.Count);
			Assert.AreEqual("TestAttribute2", classObject.PropertyList[2].AttributeList[0].TypeName);
			Assert.IsNullOrEmpty(classObject.PropertyList[2].AttributeList[0].TypeNamespace);
			Assert.AreEqual("TestAttribute2", classObject.PropertyList[2].AttributeList[0].TypeFullName);
			Assert.AreEqual("TestAttribute3", classObject.PropertyList[2].AttributeList[1].TypeName);
			Assert.IsNullOrEmpty(classObject.PropertyList[2].AttributeList[1].TypeNamespace);
			Assert.AreEqual("TestAttribute3", classObject.PropertyList[2].AttributeList[1].TypeFullName);
			Assert.AreEqual("TestAttribute4", classObject.PropertyList[2].AttributeList[2].TypeName);
			Assert.AreEqual("Test.Test", classObject.PropertyList[2].AttributeList[2].TypeNamespace);
			Assert.AreEqual("Test.Test.TestAttribute4", classObject.PropertyList[2].AttributeList[2].TypeFullName);
		}
Example #15
0
		public void TestClassAttributeParameters()
		{
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					[TestAttribute1]
					[TestAttribute2(123, 234)]
					[TestAttribute3(123, ""abc"")]
					[TestAttribute4(Parameter1=123,Parameter2=234)]
					[TestAttribute5(123, Parameter2=234)]
					[TestAttribute6(TestSomething=TestSomthing.Else)]
					public class TestClass
					{
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(1, classList.Count);
			var classObject = classList[0];
			Assert.AreEqual(6, classObject.AttributeList.Count);

			Assert.AreEqual("TestAttribute1", classObject.AttributeList[0].TypeFullName);
			Assert.IsEmpty(classObject.AttributeList[0].ArgumentList);

			Assert.AreEqual("TestAttribute2", classObject.AttributeList[1].TypeFullName);
			Assert.AreEqual(2, classObject.AttributeList[1].ArgumentList.Count);
			Assert.IsNullOrEmpty(classObject.AttributeList[1].ArgumentList[0].ArgumentName);
			Assert.AreEqual(123, classObject.AttributeList[1].ArgumentList[0].ArguementValue);
			Assert.IsNullOrEmpty(classObject.AttributeList[1].ArgumentList[1].ArgumentName);
			Assert.AreEqual(234, classObject.AttributeList[1].ArgumentList[1].ArguementValue);
			Assert.AreEqual(123, classObject.AttributeList[1].GetAttributeParameter(0, "Something", true));
			Assert.AreEqual(234, classObject.AttributeList[1].GetAttributeParameter(1, "Something", true));
			Assert.Throws(typeof(ArgumentNullException), delegate { classObject.AttributeList[1].GetAttributeParameter(0, null, true );});
			Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[1].GetAttributeParameter(-1, "Something", true);});
			Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[1].GetAttributeParameter(2, "Something", true); });


			Assert.AreEqual("TestAttribute3", classObject.AttributeList[2].TypeFullName);
			Assert.IsNullOrEmpty(classObject.AttributeList[2].ArgumentList[0].ArgumentName);
			Assert.AreEqual(123, classObject.AttributeList[2].ArgumentList[0].ArguementValue);
			Assert.IsNullOrEmpty(classObject.AttributeList[2].ArgumentList[1].ArgumentName);
			Assert.AreEqual("abc", classObject.AttributeList[2].ArgumentList[1].ArguementValue);
			Assert.AreEqual(123, classObject.AttributeList[2].GetAttributeParameter(0, "Something", true));
			Assert.AreEqual("abc", classObject.AttributeList[2].GetAttributeParameter(1, "Something", true));
			Assert.Throws(typeof(ArgumentNullException), delegate { classObject.AttributeList[2].GetAttributeParameter(0, null, true); });
			Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[2].GetAttributeParameter(-1, "Something", true); });
			Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[2].GetAttributeParameter(2, "Something", true); });

			Assert.AreEqual("TestAttribute4", classObject.AttributeList[3].TypeFullName);
			Assert.AreEqual("Parameter1", classObject.AttributeList[3].ArgumentList[0].ArgumentName);
			Assert.AreEqual(123, classObject.AttributeList[3].ArgumentList[0].ArguementValue);
			Assert.AreEqual("Parameter2", classObject.AttributeList[3].ArgumentList[1].ArgumentName);
			Assert.AreEqual(234, classObject.AttributeList[3].ArgumentList[1].ArguementValue);
			Assert.AreEqual(123, classObject.AttributeList[3].GetAttributeParameter(0, "Parameter1", true));
			Assert.AreEqual(234, classObject.AttributeList[3].GetAttributeParameter(1, "Parameter2", true));
			Assert.Throws(typeof(ArgumentNullException), delegate { classObject.AttributeList[3].GetAttributeParameter(0, null, true); });
			Assert.Throws(typeof(ArgumentException), delegate { classObject.AttributeList[3].GetAttributeParameter(0, "Something", true); });
			Assert.Throws(typeof(ArgumentException), delegate { classObject.AttributeList[3].GetAttributeParameter(1, "Something", true); });
			Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[3].GetAttributeParameter(-1, "Something", true); });
			Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[3].GetAttributeParameter(2, "Something", true); });

			Assert.AreEqual("TestAttribute5", classObject.AttributeList[4].TypeFullName);
			Assert.IsNullOrEmpty(classObject.AttributeList[4].ArgumentList[0].ArgumentName);
			Assert.AreEqual(123, classObject.AttributeList[4].ArgumentList[0].ArguementValue);
			Assert.AreEqual("Parameter2", classObject.AttributeList[4].ArgumentList[1].ArgumentName);
			Assert.AreEqual(234, classObject.AttributeList[4].ArgumentList[1].ArguementValue);

			Assert.AreEqual(123, classObject.AttributeList[4].GetAttributeParameter(0, "Parameter1", true));
			Assert.Throws(typeof(ArgumentException), delegate { classObject.AttributeList[4].GetAttributeParameter(1, "Parameter1", true); });
			Assert.AreEqual(234, classObject.AttributeList[4].GetAttributeParameter(1, "Parameter2", true));
			Assert.Throws(typeof(ArgumentNullException), delegate { classObject.AttributeList[4].GetAttributeParameter(0, null, true); });
			Assert.Throws(typeof(ArgumentException), delegate { classObject.AttributeList[4].GetAttributeParameter(1, "Something", true); });
			Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[4].GetAttributeParameter(-1, "Something", true); });
			Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[4].GetAttributeParameter(2, "Something", true); });

			Assert.AreEqual("TestAttribute6", classObject.AttributeList[5].TypeFullName);
		}
Example #16
0
        public void TestClassAttributeParameters()
        {
            string data =
                @"
				using System;

				namespace Test.Namespace
				{
					[TestAttribute1]
					[TestAttribute2(123, 234)]
					[TestAttribute3(123, ""abc"")]
					[TestAttribute4(Parameter1=123,Parameter2=234)]
					[TestAttribute5(123, Parameter2=234)]
					[TestAttribute6(TestSomething=TestSomthing.Else)]
					public class TestClass
					{
					}
				}
			"            ;
            ClassParser parser    = new ClassParser();
            var         classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);

            Assert.AreEqual(1, classList.Count);
            var classObject = classList[0];

            Assert.AreEqual(6, classObject.AttributeList.Count);

            Assert.AreEqual("TestAttribute1", classObject.AttributeList[0].TypeFullName);
            Assert.IsEmpty(classObject.AttributeList[0].ArgumentList);

            Assert.AreEqual("TestAttribute2", classObject.AttributeList[1].TypeFullName);
            Assert.AreEqual(2, classObject.AttributeList[1].ArgumentList.Count);
            Assert.IsNullOrEmpty(classObject.AttributeList[1].ArgumentList[0].ArgumentName);
            Assert.AreEqual(123, classObject.AttributeList[1].ArgumentList[0].ArguementValue);
            Assert.IsNullOrEmpty(classObject.AttributeList[1].ArgumentList[1].ArgumentName);
            Assert.AreEqual(234, classObject.AttributeList[1].ArgumentList[1].ArguementValue);
            Assert.AreEqual(123, classObject.AttributeList[1].GetAttributeParameter(0, "Something", true));
            Assert.AreEqual(234, classObject.AttributeList[1].GetAttributeParameter(1, "Something", true));
            Assert.Throws(typeof(ArgumentNullException), delegate { classObject.AttributeList[1].GetAttributeParameter(0, null, true); });
            Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[1].GetAttributeParameter(-1, "Something", true); });
            Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[1].GetAttributeParameter(2, "Something", true); });


            Assert.AreEqual("TestAttribute3", classObject.AttributeList[2].TypeFullName);
            Assert.IsNullOrEmpty(classObject.AttributeList[2].ArgumentList[0].ArgumentName);
            Assert.AreEqual(123, classObject.AttributeList[2].ArgumentList[0].ArguementValue);
            Assert.IsNullOrEmpty(classObject.AttributeList[2].ArgumentList[1].ArgumentName);
            Assert.AreEqual("abc", classObject.AttributeList[2].ArgumentList[1].ArguementValue);
            Assert.AreEqual(123, classObject.AttributeList[2].GetAttributeParameter(0, "Something", true));
            Assert.AreEqual("abc", classObject.AttributeList[2].GetAttributeParameter(1, "Something", true));
            Assert.Throws(typeof(ArgumentNullException), delegate { classObject.AttributeList[2].GetAttributeParameter(0, null, true); });
            Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[2].GetAttributeParameter(-1, "Something", true); });
            Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[2].GetAttributeParameter(2, "Something", true); });

            Assert.AreEqual("TestAttribute4", classObject.AttributeList[3].TypeFullName);
            Assert.AreEqual("Parameter1", classObject.AttributeList[3].ArgumentList[0].ArgumentName);
            Assert.AreEqual(123, classObject.AttributeList[3].ArgumentList[0].ArguementValue);
            Assert.AreEqual("Parameter2", classObject.AttributeList[3].ArgumentList[1].ArgumentName);
            Assert.AreEqual(234, classObject.AttributeList[3].ArgumentList[1].ArguementValue);
            Assert.AreEqual(123, classObject.AttributeList[3].GetAttributeParameter(0, "Parameter1", true));
            Assert.AreEqual(234, classObject.AttributeList[3].GetAttributeParameter(1, "Parameter2", true));
            Assert.Throws(typeof(ArgumentNullException), delegate { classObject.AttributeList[3].GetAttributeParameter(0, null, true); });
            Assert.Throws(typeof(ArgumentException), delegate { classObject.AttributeList[3].GetAttributeParameter(0, "Something", true); });
            Assert.Throws(typeof(ArgumentException), delegate { classObject.AttributeList[3].GetAttributeParameter(1, "Something", true); });
            Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[3].GetAttributeParameter(-1, "Something", true); });
            Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[3].GetAttributeParameter(2, "Something", true); });

            Assert.AreEqual("TestAttribute5", classObject.AttributeList[4].TypeFullName);
            Assert.IsNullOrEmpty(classObject.AttributeList[4].ArgumentList[0].ArgumentName);
            Assert.AreEqual(123, classObject.AttributeList[4].ArgumentList[0].ArguementValue);
            Assert.AreEqual("Parameter2", classObject.AttributeList[4].ArgumentList[1].ArgumentName);
            Assert.AreEqual(234, classObject.AttributeList[4].ArgumentList[1].ArguementValue);

            Assert.AreEqual(123, classObject.AttributeList[4].GetAttributeParameter(0, "Parameter1", true));
            Assert.Throws(typeof(ArgumentException), delegate { classObject.AttributeList[4].GetAttributeParameter(1, "Parameter1", true); });
            Assert.AreEqual(234, classObject.AttributeList[4].GetAttributeParameter(1, "Parameter2", true));
            Assert.Throws(typeof(ArgumentNullException), delegate { classObject.AttributeList[4].GetAttributeParameter(0, null, true); });
            Assert.Throws(typeof(ArgumentException), delegate { classObject.AttributeList[4].GetAttributeParameter(1, "Something", true); });
            Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[4].GetAttributeParameter(-1, "Something", true); });
            Assert.Throws(typeof(ArgumentOutOfRangeException), delegate { classObject.AttributeList[4].GetAttributeParameter(2, "Something", true); });

            Assert.AreEqual("TestAttribute6", classObject.AttributeList[5].TypeFullName);
        }
Example #17
0
		public void TestPropertyProtectionLevel()
		{
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						private int PrivateProperty1 { get; set; }
						int PrivateProperty2 { get; set; }

						public int PublicProperty1 { get; set; }

						protected int ProtectedProperty1 { get; set; }

						internal int InternalProperty1 { get; set; }
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(1, classList.Count);
			var classObject = classList[0];
			Assert.AreEqual(5, classObject.PropertyList.Count);

			Assert.AreEqual("PrivateProperty1", classObject.PropertyList[0].PropertyName);
			Assert.AreEqual(EnumProtectionLevel.Private, classObject.PropertyList[0].ProtectionLevel);

			Assert.AreEqual("PrivateProperty2", classObject.PropertyList[1].PropertyName);
			Assert.AreEqual(EnumProtectionLevel.Private, classObject.PropertyList[1].ProtectionLevel);

			Assert.AreEqual("PublicProperty1", classObject.PropertyList[2].PropertyName);
			Assert.AreEqual(EnumProtectionLevel.Public, classObject.PropertyList[2].ProtectionLevel);

			Assert.AreEqual("ProtectedProperty1", classObject.PropertyList[3].PropertyName);
			Assert.AreEqual(EnumProtectionLevel.Protected, classObject.PropertyList[3].ProtectionLevel);

			Assert.AreEqual("InternalProperty1", classObject.PropertyList[4].PropertyName);
			Assert.AreEqual(EnumProtectionLevel.Internal, classObject.PropertyList[4].ProtectionLevel);
		}
Example #18
0
		public void TestFields()
		{
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public int TestField1 = 1;
						private string TestField2 = ""abc"";
						internal Test1.Test2.TestType TestField3;
						protected int TestField4;
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(1, classList.Count);
			var classObject = classList[0];
			Assert.IsEmpty(classObject.PropertyList);
			Assert.AreEqual(4, classObject.FieldList.Count);
			
			Assert.AreEqual("TestField1", classObject.FieldList[0].FieldName);
			Assert.AreEqual("int", classObject.FieldList[0].TypeName);
			Assert.IsNullOrEmpty(classObject.FieldList[0].TypeNamespace);
			Assert.AreEqual("int", classObject.FieldList[0].TypeFullName);
			Assert.AreEqual(EnumProtectionLevel.Public, classObject.FieldList[0].ProtectionLevel);

			Assert.AreEqual("TestField2", classObject.FieldList[1].FieldName);
			Assert.AreEqual("string", classObject.FieldList[1].TypeName);
			Assert.IsNullOrEmpty(classObject.FieldList[1].TypeNamespace);
			Assert.AreEqual("string", classObject.FieldList[1].TypeFullName);
			Assert.AreEqual(EnumProtectionLevel.Private, classObject.FieldList[1].ProtectionLevel);

			Assert.AreEqual("TestField3", classObject.FieldList[2].FieldName);
			Assert.AreEqual("TestType", classObject.FieldList[2].TypeName);
			Assert.AreEqual("Test1.Test2", classObject.FieldList[2].TypeNamespace);
			Assert.AreEqual("Test1.Test2.TestType", classObject.FieldList[2].TypeFullName);
			Assert.AreEqual(EnumProtectionLevel.Internal, classObject.FieldList[2].ProtectionLevel);

			Assert.AreEqual("TestField4", classObject.FieldList[3].FieldName);
			Assert.AreEqual("int", classObject.FieldList[3].TypeName);
			Assert.IsNullOrEmpty(classObject.FieldList[3].TypeNamespace);
			Assert.AreEqual("int", classObject.FieldList[3].TypeFullName);
			Assert.AreEqual(EnumProtectionLevel.Protected, classObject.FieldList[3].ProtectionLevel);

			Assert.AreEqual("TestField2", classObject.FieldList[1].FieldName);
			Assert.AreEqual("string", classObject.FieldList[1].TypeName);
			Assert.IsNullOrEmpty(classObject.FieldList[1].TypeNamespace);
			Assert.AreEqual("string", classObject.FieldList[1].TypeFullName);
			Assert.AreEqual(EnumProtectionLevel.Private, classObject.FieldList[1].ProtectionLevel);
		}
Example #19
0
		public void TestFieldAttributes()
		{
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public string Field1;

						[TestAttribute1]
						public int Field2;

						[TestAttribute2]
						[TestAttribute3, Test.Test.TestAttribute4]
						public float Field3;
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(1, classList.Count);
			var classObject = classList[0];
			Assert.AreEqual(3, classObject.FieldList.Count);

			Assert.AreEqual("Field1", classObject.FieldList[0].FieldName);
			Assert.IsEmpty(classObject.FieldList[0].AttributeList);

			Assert.AreEqual("Field2", classObject.FieldList[1].FieldName);
			Assert.AreEqual(1, classObject.FieldList[1].AttributeList.Count);
			Assert.AreEqual("TestAttribute1", classObject.FieldList[1].AttributeList[0].TypeName);
			Assert.IsNullOrEmpty(classObject.FieldList[1].AttributeList[0].TypeNamespace);
			Assert.AreEqual("TestAttribute1", classObject.FieldList[1].AttributeList[0].TypeFullName);

			Assert.AreEqual("Field3", classObject.FieldList[2].FieldName);
			Assert.AreEqual(3, classObject.FieldList[2].AttributeList.Count);
			Assert.AreEqual("TestAttribute2", classObject.FieldList[2].AttributeList[0].TypeName);
			Assert.IsNullOrEmpty(classObject.FieldList[2].AttributeList[0].TypeNamespace);
			Assert.AreEqual("TestAttribute2", classObject.FieldList[2].AttributeList[0].TypeFullName);
			Assert.AreEqual("TestAttribute3", classObject.FieldList[2].AttributeList[1].TypeName);
			Assert.IsNullOrEmpty(classObject.FieldList[2].AttributeList[1].TypeNamespace);
			Assert.AreEqual("TestAttribute3", classObject.FieldList[2].AttributeList[1].TypeFullName);
			Assert.AreEqual("TestAttribute4", classObject.FieldList[2].AttributeList[2].TypeName);
			Assert.AreEqual("Test.Test", classObject.FieldList[2].AttributeList[2].TypeNamespace);
			Assert.AreEqual("Test.Test.TestAttribute4", classObject.FieldList[2].AttributeList[2].TypeFullName);
		}
Example #20
0
		public void TestCompoundFields()
		{
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					public class TestClass
					{
						public string Field1 = ""abc"";
						public int Field2, Field3=4;
						public double Field5;
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(1, classList.Count);
			var classObject = classList[0];
			Assert.AreEqual(4, classObject.FieldList.Count);

			Assert.AreEqual("Field1", classObject.FieldList[0].FieldName);
			Assert.AreEqual("string", classObject.FieldList[0].TypeFullName);
			Assert.AreEqual("abc", classObject.FieldList[0].FieldValue);

			Assert.AreEqual("Field2", classObject.FieldList[1].FieldName);
			Assert.AreEqual("int", classObject.FieldList[1].TypeFullName);
			Assert.IsNull(classObject.FieldList[1].FieldValue);

			Assert.AreEqual("Field3", classObject.FieldList[2].FieldName);
			Assert.AreEqual("int", classObject.FieldList[2].TypeFullName);
			Assert.AreEqual(4, classObject.FieldList[2].FieldValue);

			Assert.AreEqual("Field5", classObject.FieldList[3].FieldName);
			Assert.AreEqual("double", classObject.FieldList[3].TypeFullName);
			Assert.IsNull(classObject.FieldList[3].FieldValue);
		}
Example #21
0
		public void TestClassProtectionLevel()
		{
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					public class PublicClass
					{
					}

					private class PrivateClass
					{
					}

					internal class InternalClass
					{
					}

					protected class ProtectedClass
					{
					}
				}
			";
			ClassParser parser = new ClassParser();
			var classList = parser.ParseString(data.ToString(), "C:\\Test", "TestFileName.cs", null);
			Assert.AreEqual(4, classList.Count);

			Assert.AreEqual("PublicClass", classList[0].ClassName);
			Assert.AreEqual(EnumProtectionLevel.Public, classList[0].ProtectionLevel);

			Assert.AreEqual("PrivateClass", classList[1].ClassName);
			Assert.AreEqual(EnumProtectionLevel.Private, classList[1].ProtectionLevel);

			Assert.AreEqual("InternalClass", classList[2].ClassName);
			Assert.AreEqual(EnumProtectionLevel.Internal, classList[2].ProtectionLevel);

			Assert.AreEqual("ProtectedClass", classList[3].ClassName);
			Assert.AreEqual(EnumProtectionLevel.Protected, classList[3].ProtectionLevel);
		}
Example #22
0
		public void UpdateExistingClass()
		{
			var existingClass1 = new CSClass()
			{
				ClassName = "TestClassLeaveAlone",
				NamespaceName = "Test.Namespace",
				PropertyList = new List<CSProperty>() 
				{
					new CSProperty {  TypeName = "int", PropertyName = "TestProperty1" },
					new CSProperty {  TypeName = "int", PropertyName = "TestProperty2" }
				},
				FieldList = new List<CSField>()
				{
					new CSField {  TypeName = "int", FieldName = "TestField1" },
					new CSField {  TypeName = "int", FieldName = "TestField2" }
				}
			};
			var existingClass2 = new CSClass()
			{
				ClassName = "TestClassUpdate",
				NamespaceName = "Test.Namespace",
				PropertyList = new List<CSProperty>() 
				{
					new CSProperty {  TypeName = "int", PropertyName = "TestProperty1" },
					new CSProperty {  TypeName = "int", PropertyName = "TestProperty2" }
				},
				FieldList = new List<CSField>()
				{
					new CSField {  TypeName = "int", FieldName = "TestField1" },
					new CSField {  TypeName = "int", FieldName = "TestField2" }
				}
			};
			List<CSClass> existingClassList = new List<CSClass>() { existingClass1, existingClass2 };
			string data =
			@"
				using System;

				namespace Test.Namespace
				{
					public class TestClassUpdate
					{
						public int TestProperty3 { get; set; }
						public int TestProperty4 { get; set; }

						public int TestField3;
						public int TestField4;
					}
					public class TestClassNew
					{
						public int TestProperty1 { get; set; }
						public int TestProperty2 { get; set; }

						public int TestField1;
						public int TestField2;
					}
				}
			";
			ClassParser parser = new ClassParser();
			var newClassList = parser.ParseString(data, "TestFile.cs", "C:\\Test", existingClassList);

			Assert.AreEqual(3, newClassList.Count);

			var testClassLeaveAlone = newClassList[0];
			Assert.AreEqual("Test.Namespace.TestClassLeaveAlone", testClassLeaveAlone.ClassFullName);
			Assert.AreEqual(2, testClassLeaveAlone.PropertyList.Count);
			Assert.AreEqual("TestProperty1", testClassLeaveAlone.PropertyList[0].PropertyName);
			Assert.AreEqual("TestProperty2", testClassLeaveAlone.PropertyList[1].PropertyName);
			Assert.AreEqual(2, testClassLeaveAlone.FieldList.Count);
			Assert.AreEqual("TestField1", testClassLeaveAlone.FieldList[0].FieldName);
			Assert.AreEqual("TestField2", testClassLeaveAlone.FieldList[1].FieldName);

			var testClassUpdate = newClassList[1];
			Assert.AreEqual("Test.Namespace.TestClassUpdate", testClassUpdate.ClassFullName);
			Assert.AreEqual(4, testClassUpdate.PropertyList.Count);
			Assert.AreEqual("TestProperty1", testClassUpdate.PropertyList[0].PropertyName);
			Assert.AreEqual("TestProperty2", testClassUpdate.PropertyList[1].PropertyName);
			Assert.AreEqual("TestProperty3", testClassUpdate.PropertyList[2].PropertyName);
			Assert.AreEqual("TestProperty4", testClassUpdate.PropertyList[3].PropertyName);
			Assert.AreEqual(4, testClassUpdate.FieldList.Count);
			Assert.AreEqual("TestField1", testClassUpdate.FieldList[0].FieldName);
			Assert.AreEqual("TestField2", testClassUpdate.FieldList[1].FieldName);
			Assert.AreEqual("TestField3", testClassUpdate.FieldList[2].FieldName);
			Assert.AreEqual("TestField4", testClassUpdate.FieldList[3].FieldName);

			var testClassNew = newClassList[2];
			Assert.AreEqual("Test.Namespace.TestClassNew", testClassNew.ClassFullName);
			Assert.AreEqual(2, testClassNew.PropertyList.Count);
			Assert.AreEqual("TestProperty1", testClassNew.PropertyList[0].PropertyName);
			Assert.AreEqual("TestProperty2", testClassNew.PropertyList[1].PropertyName);
			Assert.AreEqual(2, testClassNew.FieldList.Count);
			Assert.AreEqual("TestField1", testClassNew.FieldList[0].FieldName);
			Assert.AreEqual("TestField2", testClassNew.FieldList[1].FieldName);
		}