1 // Copyright 2004-2007 Castle Project - http://www.castleproject.org/
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
7 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 namespace Castle
.DynamicProxy
.Test
18 using System
.Collections
;
20 using NUnit
.Framework
;
22 using Castle
.DynamicProxy
.Test
.Classes
;
25 /// Summary description for AccessLevelTestCase.
28 public class AccessLevelTestCase
31 public void ProtectedConstructor()
33 ProxyGenerator generator
= new ProxyGenerator();
35 NonPublicConstructorClass proxy
=
36 generator
.CreateClassProxy(
37 typeof(NonPublicConstructorClass
), new StandardInterceptor() )
38 as NonPublicConstructorClass
;
40 Assert
.IsNotNull(proxy
);
46 public void ProtectedMethods()
48 ProxyGenerator generator
= new ProxyGenerator();
50 LogInvocationInterceptor logger
= new LogInvocationInterceptor();
52 NonPublicMethodsClass proxy
= (NonPublicMethodsClass
)
53 generator
.CreateClassProxy( typeof(NonPublicMethodsClass
), logger
);
57 Assert
.AreEqual( 2, logger
.Invocations
.Length
);
58 Assert
.AreEqual( "DoSomething", logger
.Invocations
[0] );
59 Assert
.AreEqual( "DoOtherThing", logger
.Invocations
[1] );
63 public class LogInvocationInterceptor
: StandardInterceptor
65 protected ArrayList invocations
= new ArrayList();
67 protected override void PreProceed(IInvocation invocation
, params object[] arguments
)
69 invocations
.Add(invocation
.Method
.Name
);
72 public String
[] Invocations
74 get { return (String[]) invocations.ToArray( typeof(String) ); }