Author: hammett
Date: Mon Sep  6 14:30:01 2004
New Revision: 43430

Modified:
   
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/CodeGenerators/BaseCodeGenerator.cs
   
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/CodeGenerators/ClassProxyGenerator.cs
   
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ClassInterfaces/MyInterfaceImpl.cs
   
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs
   avalon/trunk/central/laboratory/avalon-net/DynamicProxy/README.txt
Log:
More tests.

Modified: 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/CodeGenerators/BaseCodeGenerator.cs
==============================================================================
--- 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/CodeGenerators/BaseCodeGenerator.cs
 (original)
+++ 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/CodeGenerators/BaseCodeGenerator.cs
 Mon Sep  6 14:30:01 2004
@@ -105,7 +105,7 @@
                {
                        foreach(Type inter in interfaces)
                        {
-                               GenerateTypeImplementation(inter);
+                               GenerateTypeImplementation(inter, false);
                        }
                }
 
@@ -113,8 +113,9 @@
                /// Iterates over the interfaces and generate implementation 
                /// for each method in it.
                /// </summary>
-               /// <param name="type">Interface type</param>
-               protected void GenerateTypeImplementation(Type type)
+               /// <param name="type">Type class</param>
+               /// <param name="ignoreInterfaces">Interface type</param>
+               protected void GenerateTypeImplementation(Type type, bool 
ignoreInterfaces )
                {
                        if (m_generated.Contains(type))
                        {
@@ -125,9 +126,12 @@
                                m_generated.Add( type );
                        }
 
-                       Type[] baseInterfaces = type.FindInterfaces(new 
TypeFilter(NoFilterImpl), type);
+                       if (!ignoreInterfaces)
+                       {
+                               Type[] baseInterfaces = type.FindInterfaces(new 
TypeFilter(NoFilterImpl), type);
+                               GenerateInterfaceImplementation(baseInterfaces);
+                       }
 
-                       GenerateInterfaceImplementation(baseInterfaces);
                        PropertyBuilder[] propertiesBuilder = GenerateProperties(type);
                        GenerateMethods(type, propertiesBuilder);
                }

Modified: 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/CodeGenerators/ClassProxyGenerator.cs
==============================================================================
--- 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/CodeGenerators/ClassProxyGenerator.cs
       (original)
+++ 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/Builder/CodeGenerators/ClassProxyGenerator.cs
       Mon Sep  6 14:30:01 2004
@@ -26,7 +26,7 @@
                        // TODO: interfaces of base class
                        
                        CreateTypeBuilder( baseClass, new Type[0] );
-                       GenerateTypeImplementation( baseClass );
+                       GenerateTypeImplementation( baseClass, true );
 
                        return MainTypeBuilder.CreateType();
                }

Modified: 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ClassInterfaces/MyInterfaceImpl.cs
==============================================================================
--- 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ClassInterfaces/MyInterfaceImpl.cs
 (original)
+++ 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ClassInterfaces/MyInterfaceImpl.cs
 Mon Sep  6 14:30:01 2004
@@ -54,12 +54,12 @@
                        }
                }
 
-               public int Calc(int x, int y)
+               public virtual int Calc(int x, int y)
                {
                        return x + y;
                }
 
-               public int Calc(int x, int y, int z, Single k)
+               public virtual int Calc(int x, int y, int z, Single k)
                {
                        return x + y + z + (int)k;
                }

Modified: 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs
==============================================================================
--- 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs
  (original)
+++ 
avalon/trunk/central/laboratory/avalon-net/DynamicProxy/DynamicProxyTest/ProxyGeneratorTestCase.cs
  Mon Sep  6 14:30:01 2004
@@ -62,6 +62,21 @@
                }
 
                [Test]
+               public void ProxyForClassWhichImplementsInterfaces()
+               {
+                       object proxy = ProxyGenerator.CreateClassProxy( 
+                               typeof(MyInterfaceImpl), new 
ResultModifiedInvocationHandler( new MyInterfaceImpl() ) );
+                       
+                       AssertNotNull( proxy );
+                       Assert( typeof(MyInterfaceImpl).IsAssignableFrom( 
proxy.GetType() ) );
+                       Assert( typeof(IMyInterface).IsAssignableFrom( proxy.GetType() 
) );
+
+                       IMyInterface inter = (IMyInterface) proxy;
+
+                       AssertEquals( 44, inter.Calc( 20, 25 ) );
+               }
+
+               [Test]
                public void ProxyingClassWithoutVirtualMethods()
                {
                        object proxy = ProxyGenerator.CreateClassProxy( 

Modified: avalon/trunk/central/laboratory/avalon-net/DynamicProxy/README.txt
==============================================================================
--- avalon/trunk/central/laboratory/avalon-net/DynamicProxy/README.txt  (original)
+++ avalon/trunk/central/laboratory/avalon-net/DynamicProxy/README.txt  Mon Sep  6 
14:30:01 2004
@@ -20,7 +20,7 @@
 
 NUnit is not a requirement as NAnt already includes it. 
 We cannot provide them for you due to licensing issues.
-Nant is a 100% .NET implmented build tool inspired by
+Nant is a 100% .NET implemented build tool inspired by
 ANT (http://ant.apache.org).  It is licensed under the
 GPL, but if you install it separately as a tool (preferred)
 then all is well.  NUnit is a testing framework inspired

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to