You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ha...@apache.org on 2004/04/04 00:58:31 UTC
cvs commit: avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns AbstractConcernTestCase.cs ConfigureConcernTestCase.cs ContextConcernTestCase.cs EnableLoggerConcernTestCase.cs EnableLookupConcernTestCase.cs InitializeConcernTestCase.cs ShutdownConcernTestCase.cs StartConcernTestCase.cs
hammett 2004/04/03 14:58:31
Modified: avalon-net/Castle/MicroKernel/MicroKernelTest
BaseKernelTestCase.cs MicroKernelTest.csproj
SimpleComponentFactoryTestCase.cs
avalon-net/Castle/MicroKernel/MicroKernelTest/Components
AvalonMailService.cs AvalonSpamService.cs
SimpleMailService.cs
Added: avalon-net/Castle/MicroKernel/MicroKernelTest
AbstractHandlerTestCase.cs AssemblerTestCase.cs
ConcernManagerTestCase.cs
DefaultComponentModelBuilderTestCase.cs
DefaultKernelTestCase.cs
avalon-net/Castle/MicroKernel/MicroKernelTest/Components
AvalonSpamService2.cs AvalonSpamService3.cs
ISpamService2.cs SimpleMailServiceWithLogger.cs
avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns
AbstractConcernTestCase.cs
ConfigureConcernTestCase.cs
ContextConcernTestCase.cs
EnableLoggerConcernTestCase.cs
EnableLookupConcernTestCase.cs
InitializeConcernTestCase.cs
ShutdownConcernTestCase.cs StartConcernTestCase.cs
Log:
MicroKernel for Avalon Castle - Test Cases.
Revision Changes Path
1.2 +20 -2 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/BaseKernelTestCase.cs
Index: BaseKernelTestCase.cs
===================================================================
RCS file: /home/cvs/avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/BaseKernelTestCase.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BaseKernelTestCase.cs 31 Mar 2004 00:43:30 -0000 1.1
+++ BaseKernelTestCase.cs 3 Apr 2004 22:58:30 -0000 1.2
@@ -47,7 +47,25 @@
service.Send("hammett at apache dot org", "johndoe at yahoo dot org", "Aloha!", "What's up?");
- handler.Release( );
+ handler.Release( service );
+ }
+
+ [Test]
+ public void ComponentDependingOnLogger()
+ {
+ BaseKernel container = new BaseKernel();
+ container.AddComponent( "a", typeof(IMailService), typeof(SimpleMailServiceWithLogger) );
+
+ IHandler handler = container[ "a" ];
+
+ IMailService service = handler.Resolve() as IMailService;
+
+ AssertNotNull( service );
+
+ service.Send("hammett at apache dot org",
+ "johndoe at yahoo dot org", "Aloha!", "What's up?");
+
+ handler.Release( service );
}
/// <summary>
@@ -75,7 +93,7 @@
service.Send("hammett at apache dot org", "johndoe at yahoo dot org", "Aloha!", "What's up?");
- handler.Release( );
+ handler.Release( service );
AssertEquals( 2, aspect.m_invocations.Count );
AssertEquals( "Before Send", aspect.m_invocations[0] );
1.3 +85 -0 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/MicroKernelTest.csproj
Index: MicroKernelTest.csproj
===================================================================
RCS file: /home/cvs/avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/MicroKernelTest.csproj,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- MicroKernelTest.csproj 31 Mar 2004 03:45:08 -0000 1.2
+++ MicroKernelTest.csproj 3 Apr 2004 22:58:30 -0000 1.3
@@ -99,6 +99,16 @@
<Files>
<Include>
<File
+ RelPath = "AbstractHandlerTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "AssemblerTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "AssemblyInfo.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -109,6 +119,21 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "ConcernManagerTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "DefaultComponentModelBuilderTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "DefaultKernelTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "SimpleComponentFactoryTestCase.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -124,6 +149,16 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "Components\AvalonSpamService2.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Components\AvalonSpamService3.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "Components\ICustomerManager.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -144,6 +179,11 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "Components\ISpamService2.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "Components\SimpleCustomerManager.cs"
SubType = "Code"
BuildAction = "Compile"
@@ -159,7 +199,52 @@
BuildAction = "Compile"
/>
<File
+ RelPath = "Components\SimpleMailServiceWithLogger.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
RelPath = "Components\SimpleSpamService.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Concerns\AbstractConcernTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Concerns\ConfigureConcernTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Concerns\ContextConcernTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Concerns\EnableLoggerConcernTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Concerns\EnableLookupConcernTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Concerns\InitializeConcernTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Concerns\ShutdownConcernTestCase.cs"
+ SubType = "Code"
+ BuildAction = "Compile"
+ />
+ <File
+ RelPath = "Concerns\StartConcernTestCase.cs"
SubType = "Code"
BuildAction = "Compile"
/>
1.3 +16 -18 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/SimpleComponentFactoryTestCase.cs
Index: SimpleComponentFactoryTestCase.cs
===================================================================
RCS file: /home/cvs/avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/SimpleComponentFactoryTestCase.cs,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SimpleComponentFactoryTestCase.cs 31 Mar 2004 03:45:08 -0000 1.2
+++ SimpleComponentFactoryTestCase.cs 3 Apr 2004 22:58:30 -0000 1.3
@@ -22,6 +22,10 @@
using Apache.Avalon.Castle.MicroKernel;
using Apache.Avalon.Castle.MicroKernel.Factory;
+ using Apache.Avalon.Castle.MicroKernel.Factory.Default;
+ using Apache.Avalon.Castle.MicroKernel.Handler;
+ using Apache.Avalon.Castle.MicroKernel.Model;
+ using Apache.Avalon.Castle.MicroKernel.Model.Default;
using Apache.Avalon.Castle.MicroKernel.Test.Components;
/// <summary>
@@ -30,7 +34,7 @@
[TestFixture]
public class SimpleComponentFactoryTestCase : Assertion
{
- BaseKernel kernel;
+ private BaseKernel kernel;
[SetUp]
public void CreateKernel()
@@ -46,18 +50,17 @@
kernel.AddComponent( "a", service, implementation );
- ConstructorInfo constructor = implementation.GetConstructor( Type.EmptyTypes );
- ConstructionInfo info = new ConstructionInfo( constructor, null );
+ IComponentModel model = new DefaultComponentModelBuilder(kernel).BuildModel( "a", service, implementation );
SimpleComponentFactory factory = new SimpleComponentFactory(
- service, implementation, new IAspect[0], new IAspect[0], info );
+ new IAspect[0], new IAspect[0], model, new Hashtable() );
Object instance = factory.Incarnate();
AssertNotNull( instance );
AssertNotNull( instance as IMailService );
- factory.Etherialize();
+ factory.Etherialize( instance );
}
[Test]
@@ -71,16 +74,14 @@
kernel.AddComponent( "a", service, implementation );
kernel.AddComponent( "b", serviceDep, implementationDep );
- ConstructorInfo constructor =
- implementation.GetConstructor( new Type[] { typeof(IMailService) } );
+ IComponentModel model = new DefaultComponentModelBuilder(kernel).BuildModel(
+ "a", service, implementation );
Hashtable serv2Handler = new Hashtable();
serv2Handler[ serviceDep ] = kernel.GetHandlerForService( serviceDep );
- ConstructionInfo info = new ConstructionInfo( constructor, serv2Handler );
-
SimpleComponentFactory factory = new SimpleComponentFactory(
- service, implementation, new IAspect[0], new IAspect[0], info );
+ new IAspect[0], new IAspect[0], model, serv2Handler );
Object instance = factory.Incarnate();
@@ -90,7 +91,7 @@
SimpleSpamService spamService = (SimpleSpamService) instance;
AssertNotNull( spamService.m_mailService );
- factory.Etherialize();
+ factory.Etherialize( instance );
}
[Test]
@@ -107,18 +108,15 @@
kernel.AddComponent( "b", serviceDep1, implementationDep1 );
kernel.AddComponent( "c", serviceDep2, implementationDep2 );
- ConstructorInfo constructor =
- implementation.GetConstructor( Type.EmptyTypes );
+ IComponentModel model = new DefaultComponentModelBuilder(kernel).BuildModel(
+ "a", service, implementation );
Hashtable serv2Handler = new Hashtable();
serv2Handler[ serviceDep1 ] = kernel.GetHandlerForService( serviceDep1 );
serv2Handler[ serviceDep2 ] = kernel.GetHandlerForService( serviceDep2 );
- ConstructionInfo info = new ConstructionInfo( constructor, serv2Handler );
- info.Properties = service.GetProperties();
-
SimpleComponentFactory factory = new SimpleComponentFactory(
- service, implementation, new IAspect[0], new IAspect[0], info );
+ new IAspect[0], new IAspect[0], model, serv2Handler );
Object instance = factory.Incarnate();
@@ -131,7 +129,7 @@
mailMarketing.AnnoyMillionsOfPeople( "Say something" );
- factory.Etherialize();
+ factory.Etherialize( instance );
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/AbstractHandlerTestCase.cs
Index: AbstractHandlerTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Model.Default;
using Apache.Avalon.Castle.MicroKernel.Handler;
using Apache.Avalon.Castle.MicroKernel.Handler.Default;
using Apache.Avalon.Castle.MicroKernel.Test.Components;
/// <summary>
/// Summary description for AbstractHandlerTestCase.
/// </summary>
[TestFixture]
public class AbstractHandlerTestCase : Assertion
{
private Kernel kernel = new DefaultKernel();
private Type service = typeof( IMailService );
private Type implementation = typeof( SimpleMailService );
private IComponentModel model;
[SetUp]
public void Init()
{
model = new DefaultComponentModelBuilder(kernel).BuildModel(
"a", service, implementation );
}
[Test]
public void TransientReferences()
{
MyHandler handler = new MyHandler( model );
object instance = handler.Resolve();
AssertNotNull( instance );
Assert( handler.IsOwner( instance ) );
handler.Release( instance );
Assert( !handler.IsOwner( instance ) );
}
[Test]
public void MultipleTransientReferences()
{
MyHandler handler = new MyHandler( model );
object instance1 = handler.Resolve();
object instance2 = handler.Resolve();
object instance3 = handler.Resolve();
AssertNotNull( instance1 );
AssertNotNull( instance2 );
AssertNotNull( instance3 );
Assert( handler.IsOwner( instance1 ) );
Assert( handler.IsOwner( instance2 ) );
Assert( handler.IsOwner( instance3 ) );
Assert( !handler.IsOwner( new object() ) );
handler.Release( instance3 );
Assert( !handler.IsOwner( instance3 ) );
handler.Release( instance2 );
Assert( !handler.IsOwner( instance2 ) );
handler.Release( instance1 );
Assert( !handler.IsOwner( instance1 ) );
}
public class MyHandler : AbstractHandler
{
public MyHandler( IComponentModel model ) : base( model )
{
}
public override object Resolve()
{
object instance = new object();
base.RegisterInstance( instance );
return instance;
}
public override void Release(object instance)
{
if (IsOwner( instance ))
{
UnregisterInstance(instance);
}
}
}
[Test]
public void SingletonReferences()
{
MySingletonHandler handler = new MySingletonHandler( model );
object instance1 = handler.Resolve();
object instance2 = handler.Resolve();
AssertNotNull( instance1 );
AssertNotNull( instance2 );
AssertEquals( instance1, instance2 );
Assert( handler.IsOwner( instance1 ) );
Assert( handler.IsOwner( instance2 ) );
handler.Release( instance1 );
handler.Release( instance2 );
Assert( !handler.IsOwner( instance1 ) );
Assert( !handler.IsOwner( instance2 ) );
}
public class MySingletonHandler : AbstractHandler
{
public object instance = new object();
public MySingletonHandler( IComponentModel model ) : base( model )
{
}
public override object Resolve()
{
base.RegisterInstance( instance );
return instance;
}
public override void Release(object instance)
{
if (IsOwner( instance ))
{
UnregisterInstance(instance);
}
}
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/AssemblerTestCase.cs
Index: AssemblerTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test
{
using System;
using NUnit.Framework;
/// <summary>
/// Summary description for AssemblerTestCase.
/// </summary>
public class AssemblerTestCase : Assertion
{
public void BuildingConstructorArgs()
{
// object[] arguments = Assembler.BuildConstructorArguments( model );
// Assembler.AssembleProperties( properties, model );
}
public void AssembleProperties()
{
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/ConcernManagerTestCase.cs
Index: ConcernManagerTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Concerns;
using Apache.Avalon.Castle.MicroKernel.Concerns.Default;
/// <summary>
/// Summary description for ConcernManagerTestCase.
/// </summary>
[TestFixture]
public class ConcernManagerTestCase : Assertion
{
private Kernel m_kernel;
[SetUp]
public void CreateKernel()
{
m_kernel = new DefaultKernel();
}
[Test]
public void Creation()
{
ConcernManager manager = new ConcernManager();
AssertNotNull( manager );
}
[Test]
public void GetDefaultCommissionChain()
{
ConcernManager manager = new ConcernManager();
IConcern concern = manager.GetCommissionChain( m_kernel );
AssertNotNull( concern );
AssertNotNull( concern is ICreationConcern );
AssertNotNull( concern is CreationConcern );
AssertNotNull( concern.Next );
concern = concern.Next;
AssertNotNull( concern );
AssertNotNull( concern is ICommissionConcern );
AssertNotNull( concern is EnableLoggerConcern );
concern = concern.Next;
AssertNotNull( concern );
AssertNotNull( concern is ICommissionConcern );
AssertNotNull( concern is ContextConcern );
concern = concern.Next;
AssertNotNull( concern );
AssertNotNull( concern is ICommissionConcern );
AssertNotNull( concern is EnableLookupConcern );
concern = concern.Next;
AssertNotNull( concern );
AssertNotNull( concern is ICommissionConcern );
AssertNotNull( concern is ConfigureConcern );
concern = concern.Next;
AssertNotNull( concern );
AssertNotNull( concern is ICommissionConcern );
AssertNotNull( concern is InitializeConcern );
concern = concern.Next;
AssertNotNull( concern );
AssertNotNull( concern is ICommissionConcern );
AssertNotNull( concern is StartConcern );
AssertNull( concern.Next );
}
[Test]
public void GetDefaultDecommissionChain()
{
ConcernManager manager = new ConcernManager();
IConcern concern = manager.GetDecommissionChain( m_kernel );
AssertNotNull( concern );
AssertNotNull( concern is IDecommissionConcern );
AssertNotNull( concern is ShutdownConcern );
AssertNull( concern.Next );
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultComponentModelBuilderTestCase.cs
Index: DefaultComponentModelBuilderTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Model.Default;
using Apache.Avalon.Castle.MicroKernel.Test.Components;
/// <summary>
/// Summary description for DefaultComponentModelBuilderTestCase.
/// </summary>
[TestFixture]
public class DefaultComponentModelBuilderTestCase : Assertion
{
private Kernel m_kernel;
[SetUp]
public void CreateKernel()
{
m_kernel = new BaseKernel();
}
[Test]
public void SimpleComponent()
{
DefaultComponentModelBuilder builder =
new DefaultComponentModelBuilder( m_kernel );
Type service = typeof( IMailService );
Type implementation = typeof( SimpleMailService );
IComponentModel model =
builder.BuildModel( "a", service, implementation );
AssertNotNull( model );
AssertNotNull( model.Logger );
AssertNotNull( model.Configuration );
AssertNotNull( model.Context );
AssertNotNull( model.Dependencies );
AssertEquals( 0, model.Dependencies.Length );
}
[Test]
public void DependencyInConstructor()
{
DefaultComponentModelBuilder builder =
new DefaultComponentModelBuilder( m_kernel );
Type service = typeof( ISpamService );
Type implementation = typeof( SimpleSpamService );
IComponentModel model =
builder.BuildModel( "a", service, implementation );
AssertNotNull( model );
AssertNotNull( model.Logger );
AssertNotNull( model.Configuration );
AssertNotNull( model.Context );
AssertNotNull( model.Dependencies );
AssertEquals( 1, model.Dependencies.Length );
}
[Test]
public void DependencyInSetters()
{
DefaultComponentModelBuilder builder =
new DefaultComponentModelBuilder( m_kernel );
Type service = typeof( IMailMarketingService );
Type implementation = typeof( SimpleMailMarketingService );
IComponentModel model =
builder.BuildModel( "a", service, implementation );
AssertNotNull( model );
AssertNotNull( model.Logger );
AssertNotNull( model.Configuration );
AssertNotNull( model.Context );
AssertNotNull( model.Dependencies );
AssertEquals( 2, model.Dependencies.Length );
}
[Test]
public void AvalonSimpleService()
{
DefaultComponentModelBuilder builder =
new DefaultComponentModelBuilder( m_kernel );
Type service = typeof( IMailService );
Type implementation = typeof( AvalonMailService );
IComponentModel model =
builder.BuildModel( "a", service, implementation );
AssertNotNull( model );
AssertNotNull( model.Logger );
AssertNotNull( model.Configuration );
AssertNotNull( model.Context );
AssertNotNull( model.Dependencies );
AssertEquals( 0, model.Dependencies.Length );
}
[Test]
public void AvalonServiceWithDependencies()
{
DefaultComponentModelBuilder builder =
new DefaultComponentModelBuilder( m_kernel );
Type service = typeof( ISpamService );
Type implementation = typeof( AvalonSpamService );
IComponentModel model =
builder.BuildModel( "a", service, implementation );
AssertNotNull( model );
AssertNotNull( model.Logger );
AssertNotNull( model.Configuration );
AssertNotNull( model.Context );
AssertNotNull( model.Dependencies );
AssertEquals( 1, model.Dependencies.Length );
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/DefaultKernelTestCase.cs
Index: DefaultKernelTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Test.Components;
/// <summary>
/// Summary description for DefaultKernelTestCase.
/// </summary>
[TestFixture]
public class DefaultKernelTestCase : Assertion
{
[Test]
public void Creation()
{
DefaultKernel kernel = new DefaultKernel();
AssertNotNull(kernel);
}
/// <summary>
/// Just a simple Service resolution.
/// No concerns or aspects involved.
/// </summary>
[Test]
public void SimpleUsage()
{
AvalonKernel container = new DefaultKernel();
container.AddComponent( "a", typeof(IMailService), typeof(SimpleMailService) );
IHandler handler = container[ "a" ];
IMailService service = handler.Resolve() as IMailService;
AssertNotNull( service );
service.Send("hammett at apache dot org", "johndoe at yahoo dot org", "Aloha!", "What's up?");
handler.Release( service );
}
[Test]
public void SimpleAvalonComponent()
{
AvalonKernel container = new DefaultKernel();
container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService) );
IHandler handler = container[ "a" ];
IMailService service = handler.Resolve() as IMailService;
AssertNotNull( service );
AvalonMailService realInstance = (AvalonMailService) service;
Assert( realInstance.initialized );
Assert( realInstance.configured );
Assert( !realInstance.disposed );
service.Send("hammett at apache dot org", "johndoe at yahoo dot org", "Aloha!", "What's up?");
handler.Release( service );
Assert( realInstance.disposed );
}
[Test]
public void AvalonComponentWithDependencies()
{
AvalonKernel container = new DefaultKernel();
container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService) );
container.AddComponent( "b", typeof(ISpamService), typeof(AvalonSpamService) );
IHandler handler = container[ "b" ];
ISpamService service = handler.Resolve() as ISpamService;
AssertNotNull( service );
service.AnnoyPeople( "Work at home and earn a thousand dollars per second!" );
handler.Release( service );
}
[Test]
public void HybridAvalonComponent()
{
AvalonKernel container = new DefaultKernel();
container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService) );
container.AddComponent( "b", typeof(ISpamService), typeof(AvalonSpamService2) );
IHandler handler = container[ "b" ];
ISpamService service = handler.Resolve() as ISpamService;
AssertNotNull( service );
service.AnnoyPeople( "Work at home and earn a thousand dollars per second!" );
handler.Release( service );
}
[Test]
public void HybridAvalonComponentUsingSetters()
{
AvalonKernel container = new DefaultKernel();
container.AddComponent( "a", typeof(IMailService), typeof(AvalonMailService) );
container.AddComponent( "b", typeof(ISpamService2), typeof(AvalonSpamService3) );
IHandler handler = container[ "b" ];
ISpamService service = handler.Resolve() as ISpamService;
AssertNotNull( service );
service.AnnoyPeople( "Work at home and earn a thousand dollars per second!" );
handler.Release( service );
}
}
}
1.2 +9 -0 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/AvalonMailService.cs
Index: AvalonMailService.cs
===================================================================
RCS file: /home/cvs/avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/AvalonMailService.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AvalonMailService.cs 31 Mar 2004 00:43:30 -0000 1.1
+++ AvalonMailService.cs 3 Apr 2004 22:58:30 -0000 1.2
@@ -21,8 +21,14 @@
/// <summary>
/// Summary description for AvalonMailService.
/// </summary>
+ [AvalonComponent("mailservice", Lifestyle.Singleton)]
+ [AvalonService( typeof(IMailService) )]
public class AvalonMailService : IMailService, IInitializable, IConfigurable, IDisposable
{
+ public bool initialized;
+ public bool configured;
+ public bool disposed;
+
public AvalonMailService()
{
}
@@ -39,6 +45,7 @@
public void Initialize()
{
+ initialized = true;
}
#endregion
@@ -47,6 +54,7 @@
public void Configure(IConfiguration config)
{
+ configured = true;
}
#endregion
@@ -55,6 +63,7 @@
public void Dispose()
{
+ disposed = true;
}
#endregion
1.2 +4 -1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/AvalonSpamService.cs
Index: AvalonSpamService.cs
===================================================================
RCS file: /home/cvs/avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/AvalonSpamService.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AvalonSpamService.cs 31 Mar 2004 00:43:31 -0000 1.1
+++ AvalonSpamService.cs 3 Apr 2004 22:58:30 -0000 1.2
@@ -36,7 +36,10 @@
public void AnnoyPeople(String contents)
{
- // TODO: Add AvalonSpamService.AnnoyPeople implementation
+ if (m_mailService == null)
+ {
+ throw new Exception("Dependency not satisfied.");
+ }
}
#endregion
1.2 +0 -1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/SimpleMailService.cs
Index: SimpleMailService.cs
===================================================================
RCS file: /home/cvs/avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/SimpleMailService.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SimpleMailService.cs 31 Mar 2004 00:43:31 -0000 1.1
+++ SimpleMailService.cs 3 Apr 2004 22:58:30 -0000 1.2
@@ -21,7 +21,6 @@
/// </summary>
public class SimpleMailService : IMailService
{
-
public SimpleMailService()
{
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/AvalonSpamService2.cs
Index: AvalonSpamService2.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Components
{
using System;
using Apache.Avalon.Framework;
/// <summary>
/// Summary description for AvalonSpamService2.
/// </summary>
[AvalonComponent("spamservice2", Lifestyle.Singleton)]
[AvalonService( typeof(ISpamService) )]
public class AvalonSpamService2 : ISpamService, IInitializable
{
public IMailService m_mailService;
public AvalonSpamService2(IMailService mailservice)
{
m_mailService = mailservice;
}
#region ISpamService Members
public void AnnoyPeople(String contents)
{
if (m_mailService == null)
{
throw new Exception("Dependency not satisfied.");
}
}
#endregion
#region IInitializable Members
public void Initialize()
{
}
#endregion
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/AvalonSpamService3.cs
Index: AvalonSpamService3.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Components
{
using System;
using Apache.Avalon.Framework;
/// <summary>
/// Summary description for AvalonSpamService3.
/// </summary>
[AvalonComponent("spamservice2", Lifestyle.Singleton)]
[AvalonService( typeof(ISpamService2) )]
public class AvalonSpamService3 : IInitializable, ISpamService2
{
public IMailService m_mailService;
public AvalonSpamService3()
{
}
#region IInitializable Members
public void Initialize()
{
}
#endregion
#region ISpamService2 Members
public IMailService MailService
{
get
{
return m_mailService;
}
set
{
m_mailService = value;
}
}
#endregion
#region ISpamService Members
public void AnnoyPeople(String contents)
{
if (m_mailService == null)
{
throw new Exception("Dependency not satisfied.");
}
}
#endregion
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/ISpamService2.cs
Index: ISpamService2.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Components
{
using System;
/// <summary>
/// Summary description for ISpamService2.
/// </summary>
public interface ISpamService2 : ISpamService
{
IMailService MailService
{
get;
set;
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Components/SimpleMailServiceWithLogger.cs
Index: SimpleMailServiceWithLogger.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Components
{
using System;
using Apache.Avalon.Framework;
/// <summary>
/// Summary description for SimpleMailServiceWithLogger.
/// </summary>
public class SimpleMailServiceWithLogger : SimpleMailService
{
public SimpleMailServiceWithLogger( ILogger logger )
{
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/AbstractConcernTestCase.cs
Index: AbstractConcernTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Concerns
{
using System;
using NUnit.Framework;
using Apache.Avalon.Framework;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Model.Default;
using Apache.Avalon.Castle.MicroKernel.Concerns;
/// <summary>
/// Summary description for AbstractConcernTestCase.
/// </summary>
public abstract class AbstractConcernTestCase : Assertion
{
protected Kernel m_kernel = new DefaultKernel();
public abstract IConcern Create();
public abstract void AssertComponent( IComponentModel model, DummyComponent component );
[Test]
public void TestApply()
{
IConcern concern = Create();
AssertNotNull( concern );
concern.Init( m_kernel );
IComponentModel model =
new DefaultComponentModelBuilder(m_kernel).BuildModel(
"a", typeof(IMyService), typeof(DummyComponent) );
DummyComponent component = new DummyComponent();
concern.Apply( model, component );
AssertComponent( model, component );
}
}
public interface IMyService
{
}
public class DummyComponent : IMyService,
ILogEnabled, IConfigurable, IInitializable,
IStartable, IContextualizable, IDisposable, ILookupEnabled
{
public bool logEnabled;
public bool configure;
public bool context;
public bool initialize;
public bool start;
public bool stop;
public bool dispose;
public bool lookup;
#region ILogEnabled Members
public void EnableLogging(ILogger logger)
{
logEnabled = true;
}
#endregion
#region IConfigurable Members
public void Configure(IConfiguration config)
{
configure = true;
}
#endregion
#region IInitializable Members
public void Initialize()
{
initialize = true;
}
#endregion
#region IStartable Members
public void Start()
{
start = true;
}
public void Stop()
{
stop = true;
}
#endregion
#region IContextualizable Members
public void Contextualize(IContext arg)
{
context = true;
}
#endregion
#region IDisposable Members
public void Dispose()
{
dispose = true;
}
#endregion
#region ILookupEnabled Members
public void EnableLookups(ILookupManager manager)
{
lookup = true;
}
#endregion
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/ConfigureConcernTestCase.cs
Index: ConfigureConcernTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Concerns
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Concerns;
using Apache.Avalon.Castle.MicroKernel.Concerns.Default;
/// <summary>
/// Summary description for ConfigureConcernTestCase.
/// </summary>
[TestFixture]
public class ConfigureConcernTestCase : AbstractConcernTestCase
{
public override IConcern Create()
{
return new ConfigureConcern( null );
}
public override void AssertComponent( IComponentModel model, DummyComponent component )
{
Assert( component.configure );
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/ContextConcernTestCase.cs
Index: ContextConcernTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Concerns
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Concerns;
using Apache.Avalon.Castle.MicroKernel.Concerns.Default;
/// <summary>
/// Summary description for ContextConcernTestCase.
/// </summary>
[TestFixture]
public class ContextConcernTestCase : AbstractConcernTestCase
{
public override IConcern Create()
{
return new ContextConcern( null );
}
public override void AssertComponent( IComponentModel model, DummyComponent component )
{
Assert( component.context );
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/EnableLoggerConcernTestCase.cs
Index: EnableLoggerConcernTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Concerns
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Concerns;
using Apache.Avalon.Castle.MicroKernel.Concerns.Default;
/// <summary>
/// Summary description for EnableLoggerConcernTestCase.
/// </summary>
[TestFixture]
public class EnableLoggerConcernTestCase : AbstractConcernTestCase
{
public override IConcern Create()
{
return new EnableLoggerConcern( null );
}
public override void AssertComponent( IComponentModel model, DummyComponent component )
{
Assert( component.logEnabled );
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/EnableLookupConcernTestCase.cs
Index: EnableLookupConcernTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Concerns
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Concerns;
using Apache.Avalon.Castle.MicroKernel.Concerns.Default;
/// <summary>
/// Summary description for EnableLookupConcernTestCase.
/// </summary>
[TestFixture]
public class EnableLookupConcernTestCase : AbstractConcernTestCase
{
public override IConcern Create()
{
return new EnableLookupConcern( null );
}
public override void AssertComponent( IComponentModel model, DummyComponent component )
{
Assert( component.lookup );
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/InitializeConcernTestCase.cs
Index: InitializeConcernTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Concerns
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Concerns;
using Apache.Avalon.Castle.MicroKernel.Concerns.Default;
/// <summary>
/// Summary description for InitializeConcernTestCase.
/// </summary>
[TestFixture]
public class InitializeConcernTestCase : AbstractConcernTestCase
{
public override IConcern Create()
{
return new InitializeConcern( null );
}
public override void AssertComponent( IComponentModel model, DummyComponent component )
{
Assert( component.initialize );
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/ShutdownConcernTestCase.cs
Index: ShutdownConcernTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Concerns
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Concerns;
using Apache.Avalon.Castle.MicroKernel.Concerns.Default;
/// <summary>
/// Summary description for ShutdownConcernTestCase.
/// </summary>
[TestFixture]
public class ShutdownConcernTestCase : AbstractConcernTestCase
{
public override IConcern Create()
{
return new ShutdownConcern( null );
}
public override void AssertComponent( IComponentModel model, DummyComponent component )
{
Assert( component.stop );
Assert( component.dispose );
}
}
}
1.1 avalon-sandbox/avalon-net/Castle/MicroKernel/MicroKernelTest/Concerns/StartConcernTestCase.cs
Index: StartConcernTestCase.cs
===================================================================
// Copyright 2004 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
namespace Apache.Avalon.Castle.MicroKernel.Test.Concerns
{
using System;
using NUnit.Framework;
using Apache.Avalon.Castle.MicroKernel.Model;
using Apache.Avalon.Castle.MicroKernel.Concerns;
using Apache.Avalon.Castle.MicroKernel.Concerns.Default;
/// <summary>
/// Summary description for StartConcernTestCase.
/// </summary>
[TestFixture]
public class StartConcernTestCase : AbstractConcernTestCase
{
public override IConcern Create()
{
return new StartConcern( null );
}
public override void AssertComponent( IComponentModel model, DummyComponent component )
{
Assert( component.start );
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org