Thread: [Adapdev-commits] Adapdev/src/Adapdev.Tests/Reflection ClassAccessorTest.cs,1.3,1.4 FieldAccessorTes
Status: Beta
Brought to you by:
intesar66
From: Sean M. <int...@us...> - 2006-02-19 06:14:05
|
Update of /cvsroot/adapdev/Adapdev/src/Adapdev.Tests/Reflection In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12892/src/Adapdev.Tests/Reflection Modified Files: ClassAccessorTest.cs FieldAccessorTest.cs FieldAccessorTestObject.cs Log Message: Index: ClassAccessorTest.cs =================================================================== RCS file: /cvsroot/adapdev/Adapdev/src/Adapdev.Tests/Reflection/ClassAccessorTest.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ClassAccessorTest.cs 16 Nov 2005 07:01:52 -0000 1.3 --- ClassAccessorTest.cs 19 Feb 2006 06:13:55 -0000 1.4 *************** *** 13,17 **** { [Test] ! public void SetAndGet() { PropertyAccessorTestObject o = new PropertyAccessorTestObject(); --- 13,17 ---- { [Test] ! public void SetAndGetProperties() { PropertyAccessorTestObject o = new PropertyAccessorTestObject(); *************** *** 32,35 **** --- 32,98 ---- [Test] + public void SetAndGetFields() + { + FieldAccessorTestObject o = new FieldAccessorTestObject(); + ClassAccessor c = new ClassAccessor(o); + + c.SetFieldValue(o, "mBool", false); + c.SetFieldValue(o, "mInt", 3); + int i = (int)c.GetFieldValue(o, "mInt"); + bool b = (bool)c.GetFieldValue(o, "mBool"); + + Assert.AreEqual(3, o.Int, "Int should be 3."); + Assert.AreEqual(false, o.Bool, "Bool should be false."); + + Assert.AreEqual(3, i, "Returned Int should be 3."); + Assert.AreEqual(false, b, "Returned Bool should be false."); + + Assert.AreEqual(0, c.GetFieldValue(o, "mPrivateInt"), "mPrivateInt should be 0."); + Assert.AreEqual(0, c.GetFieldValue(o, "mProtectedInt"), "mProtectedInt should be 0."); + + c.SetFieldValue(o, "mPrivateInt", 1); + c.SetFieldValue(o, "mProtectedInt", 1); + + Assert.AreEqual(1, c.GetFieldValue(o, "mPrivateInt"), "mPrivateInt should be 1."); + Assert.AreEqual(1, c.GetFieldValue(o, "mProtectedInt"), "mProtectedInt should be 1."); + + } + + [Test] + public void SetAndGet() + { + PropertyAccessorTestObject o = new PropertyAccessorTestObject(); + ClassAccessor c = new ClassAccessor(o); + c.LoadAllPropertiesAndFields(); + + // Fields + c.SetValue(o, "mBool", false); + c.SetValue(o, "mInt", 3); + int i = (int)c.GetValue(o, "mInt"); + bool b = (bool)c.GetValue(o, "mBool"); + + Assert.AreEqual(3, o.Int, "Int should be 3."); + Assert.AreEqual(false, o.Bool, "Bool should be false."); + + Assert.AreEqual(3, i, "Returned Int should be 3."); + Assert.AreEqual(false, b, "Returned Bool should be false."); + + + // Properties + c.SetValue(o, "Bool", true); + c.SetValue(o, "Int", 4); + int i2 = (int)c.GetValue(o, "Int"); + bool b2 = (bool)c.GetValue(o, "Bool"); + + Assert.AreEqual(4, o.Int, "Int should be 4."); + Assert.AreEqual(true, o.Bool, "Bool should be true."); + + Assert.AreEqual(4, i2, "Returned Int should be 4."); + Assert.AreEqual(true, b2, "Returned Bool should be true."); + + + } + + [Test] public void LoadAllProperties() { *************** *** 40,43 **** --- 103,128 ---- Assert.AreEqual(17, c.PropertyCount, "Should have loaded 17 properties."); } + + [Test] + public void LoadAllFields() + { + FieldAccessorTestObject o = new FieldAccessorTestObject(); + ClassAccessor c = new ClassAccessor(o); + c.LoadAllFields(); + Console.WriteLine(c); + Assert.AreEqual(19, c.FieldCount, "Should have loaded 19 fields."); + } + + [Test] + public void LoadAllPropertiesAndFields() + { + FieldAccessorTestObject o = new FieldAccessorTestObject(); + ClassAccessor c = new ClassAccessor(o); + c.LoadAllPropertiesAndFields(); + Console.WriteLine(c); + Assert.AreEqual(36, c.TotalCount, "Should have loaded 36 total."); + + } + } Index: FieldAccessorTestObject.cs =================================================================== RCS file: /cvsroot/adapdev/Adapdev/src/Adapdev.Tests/Reflection/FieldAccessorTestObject.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FieldAccessorTestObject.cs 16 Nov 2005 07:01:52 -0000 1.3 --- FieldAccessorTestObject.cs 19 Feb 2006 06:13:55 -0000 1.4 *************** *** 199,202 **** --- 199,204 ---- public int mReadOnlyInt = 0; public int mWriteOnlyInt; + private int mPrivateInt = 0; + protected int mProtectedInt = 0; } } Index: FieldAccessorTest.cs =================================================================== RCS file: /cvsroot/adapdev/Adapdev/src/Adapdev.Tests/Reflection/FieldAccessorTest.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** FieldAccessorTest.cs 16 Nov 2005 07:01:52 -0000 1.3 --- FieldAccessorTest.cs 19 Feb 2006 06:13:55 -0000 1.4 *************** *** 71,77 **** [Test] public void TestSetString() { ! FieldAccessor FieldAccessor = new FieldAccessor(typeof(FieldAccessorTestObject), "mString"); --- 71,91 ---- [Test] + public void FieldInfoTest() + { + FieldAccessorTestObject testObject = + this.CreateTestObject(); + + Type myType = testObject.GetType(); + FieldInfo myFieldInfo = myType.GetField("mString", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + + Assert.IsNotNull(myFieldInfo, "FieldInfo is null"); + myFieldInfo.SetValue(testObject, "test"); + } + + [Test] public void TestSetString() { ! ! FieldAccessor fieldAccessor = new FieldAccessor(typeof(FieldAccessorTestObject), "mString"); *************** *** 81,85 **** string testString = "New string"; ! FieldAccessor.Set(testObject, testString); Assert.AreEqual(testString, testObject.String); } --- 95,99 ---- string testString = "New string"; ! fieldAccessor.Set(testObject, testString); Assert.AreEqual(testString, testObject.String); } *************** *** 475,560 **** [Test] - public void TestCanRead() - { - FieldAccessor FieldAccessor; - - // - // Can read - // - FieldAccessor = new FieldAccessor(typeof(FieldAccessorTestObject), - "mInt"); - - Assert.IsTrue(FieldAccessor.CanRead); - - // - // Cannot read - // - FieldAccessor = new FieldAccessor(typeof(FieldAccessorTestObject), - "mWriteOnlyInt"); - - Assert.IsFalse(FieldAccessor.CanRead); - } - - [Test] - public void TestCanWrite() - { - FieldAccessor FieldAccessor; - - // - // Can read - // - FieldAccessor = new FieldAccessor(typeof(FieldAccessorTestObject), - "mInt"); - - Assert.IsTrue(FieldAccessor.CanWrite); - - // - // Cannot write - // - FieldAccessor = new FieldAccessor(typeof(FieldAccessorTestObject), - "ReadOnlyInt"); - - Assert.IsFalse(FieldAccessor.CanWrite); - } - - [Test] - [ExpectedException(typeof(FieldAccessorException), - "Property \"ReadOnlyInt\" does not have a set method.")] - public void TestSetNotSupported() - { - FieldAccessor FieldAccessor - = new FieldAccessor(typeof(FieldAccessorTestObject), - "ReadOnlyInt"); - - FieldAccessorTestObject testObject = - this.CreateTestObject(); - - // - // Attempt to set a propert that is read only - // - FieldAccessor.Set(testObject, 123); - } - - [Test] - [ExpectedException(typeof(FieldAccessorException), - "Field \"WriteOnlyInt\" does not have a get method.")] - public void TestGetNotSupported() - { - FieldAccessor FieldAccessor - = new FieldAccessor(typeof(FieldAccessorTestObject), - "WriteOnlyInt"); - - FieldAccessorTestObject testObject = - this.CreateTestObject(); - - // - // Attempt read a write-only property - // - int test = (int)FieldAccessor.Get(testObject); - } - - [Test] [ExpectedException(typeof(FieldAccessorException), ! "Field \"NonExistantProperty\" does not exist for " + "type Adapdev.Reflection.Tests.FieldAccessorTestObject.")] public void TestNonExistantProperty() --- 489,494 ---- [Test] [ExpectedException(typeof(FieldAccessorException), ! "Field \"NonExistantField\" does not exist for " + "type Adapdev.Reflection.Tests.FieldAccessorTestObject.")] public void TestNonExistantProperty() *************** *** 565,810 **** } - [Test] - public void TestGetIntegerPerformance() - { - const int TEST_ITERATIONS = 1000000; - - FieldAccessorTestObject testObject - = this.CreateTestObject(); - - int test; - - // - // Property accessor - // - DateTime start = DateTime.Now; - - FieldAccessor FieldAccessor = - new FieldAccessor(typeof(FieldAccessorTestObject), "Int"); - for(int i = 0; i < TEST_ITERATIONS; i++) - { - test = (int)FieldAccessor.Get(testObject); - } - - DateTime end = DateTime.Now; - - TimeSpan time = end - start; - double FieldAccessorMs = time.TotalMilliseconds; - - // - // Direct access - // - start = DateTime.Now; - - for(int i = 0; i < TEST_ITERATIONS; i++) - { - test = testObject.Int; - } - - end = DateTime.Now; - - time = end - start; - double directAccessMs = time.TotalMilliseconds; - - // - // Reflection - // - start = DateTime.Now; - Type type = testObject.GetType(); - for(int i = 0; i < TEST_ITERATIONS; i++) - { - test = (int)type.InvokeMember("Int", - BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.Instance, - null, testObject, null); - } - - end = DateTime.Now; - - time = end - start; - double reflectionMs = time.TotalMilliseconds; - - // - // Print results - // - Console.WriteLine( - TEST_ITERATIONS.ToString() + " property gets on integer..." - + "\nDirect access ms: \t\t\t\t\t" + directAccessMs.ToString() - + "\nFieldAccessor (Reflection.Emit) ms: \t\t" + FieldAccessorMs.ToString() - + "\nReflection ms: \t\t\t\t\t" + reflectionMs.ToString()); - } - - [Test] - public void TestSetIntegerPerformance() - { - const int TEST_ITERATIONS = 1000000; - const int TEST_VALUE = 123; - - FieldAccessorTestObject testObject - = this.CreateTestObject(); - - // - // Property accessor - // - DateTime start = DateTime.Now; - - FieldAccessor FieldAccessor = - new FieldAccessor(typeof(FieldAccessorTestObject), "Int"); - for(int i = 0; i < TEST_ITERATIONS; i++) - { - FieldAccessor.Set(testObject, TEST_VALUE); - } - - DateTime end = DateTime.Now; - - TimeSpan time = end - start; - double FieldAccessorMs = time.TotalMilliseconds; - - // - // Reflection - // - start = DateTime.Now; - Type type = testObject.GetType(); - for(int i = 0; i < TEST_ITERATIONS; i++) - { - type.InvokeMember("Int", - BindingFlags.Public | BindingFlags.SetProperty | BindingFlags.Instance, - null, testObject, new object[]{TEST_VALUE}); - } - - end = DateTime.Now; - - time = end - start; - double reflectionMs = time.TotalMilliseconds; - - // - // Print results - // - Console.WriteLine( - TEST_ITERATIONS.ToString() + " property sets on integer..." - + "\nFieldAccessor (Reflection.Emit) ms: \t\t" + FieldAccessorMs.ToString() - + "\nReflection ms: \t\t\t\t\t" + reflectionMs.ToString()); - } - - [Test] - public void TestGetStringPerformance() - { - const int TEST_ITERATIONS = 1000000; - - FieldAccessorTestObject testObject - = this.CreateTestObject(); - - string test; - - // - // Property accessor - // - DateTime start = DateTime.Now; - - FieldAccessor FieldAccessor = - new FieldAccessor(typeof(FieldAccessorTestObject), "String"); - for(int i = 0; i < TEST_ITERATIONS; i++) - { - test = (string)FieldAccessor.Get(testObject); - } - - DateTime end = DateTime.Now; - - TimeSpan time = end - start; - double FieldAccessorMs = time.TotalMilliseconds; - - // - // Direct access - // - start = DateTime.Now; - - for(int i = 0; i < TEST_ITERATIONS; i++) - { - test = testObject.String; - } - - end = DateTime.Now; - - time = end - start; - double directAccessMs = time.TotalMilliseconds; - - // - // Reflection - // - start = DateTime.Now; - Type type = testObject.GetType(); - for(int i = 0; i < TEST_ITERATIONS; i++) - { - test = (string)type.InvokeMember("String", - BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.Instance, - null, testObject, null); - } - - end = DateTime.Now; - - time = end - start; - double reflectionMs = time.TotalMilliseconds; - - // - // Print results - // - Console.WriteLine( - TEST_ITERATIONS.ToString() + " property gets on string..." - + "\nDirect access ms: \t\t\t\t\t" + directAccessMs.ToString() - + "\nFieldAccessor (Reflection.Emit) ms: \t\t" + FieldAccessorMs.ToString() - + "\nReflection ms: \t\t\t\t\t" + reflectionMs.ToString()); - } - - [Test] - public void TestSetStringPerformance() - { - const int TEST_ITERATIONS = 1000000; - const string TEST_VALUE = "Test"; - - FieldAccessorTestObject testObject - = this.CreateTestObject(); - - // - // Property accessor - // - DateTime start = DateTime.Now; - - FieldAccessor FieldAccessor = - new FieldAccessor(typeof(FieldAccessorTestObject), "String"); - for(int i = 0; i < TEST_ITERATIONS; i++) - { - FieldAccessor.Set(testObject, TEST_VALUE); - } - - DateTime end = DateTime.Now; - - TimeSpan time = end - start; - double FieldAccessorMs = time.TotalMilliseconds; - - // - // Reflection - // - start = DateTime.Now; - Type type = testObject.GetType(); - for(int i = 0; i < TEST_ITERATIONS; i++) - { - type.InvokeMember("String", - BindingFlags.Public | BindingFlags.SetProperty | BindingFlags.Instance, - null, testObject, new object[]{TEST_VALUE}); - } - - end = DateTime.Now; - - time = end - start; - double reflectionMs = time.TotalMilliseconds; - - // - // Print results - // - Console.WriteLine( - TEST_ITERATIONS.ToString() + " property sets on string..." - + "\nFieldAccessor (Reflection.Emit) ms: \t\t" + FieldAccessorMs.ToString() - + "\nReflection ms: \t\t\t\t\t" + reflectionMs.ToString()); - } - #region Private Methods --- 499,502 ---- |