|
From: <jer...@us...> - 2008-05-28 03:15:35
|
Revision: 105
http://structuremap.svn.sourceforge.net/structuremap/?rev=105&view=rev
Author: jeremydmiller
Date: 2008-05-27 20:15:34 -0700 (Tue, 27 May 2008)
Log Message:
-----------
Cleaning up Registry code
Modified Paths:
--------------
trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs
trunk/Source/StructureMap/Configuration/DSL/Registry.cs
trunk/Source/StructureMap/Configuration/FamilyParser.cs
trunk/Source/StructureMap/InstanceManager.cs
trunk/Source/StructureMap/StructureMapConfiguration.cs
trunk/Source/StructureMap.Testing/BuildSessionTester.cs
trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs
trunk/Source/StructureMap.Testing/Configuration/DSL/AddTypesTester.cs
trunk/Source/StructureMap.Testing/Configuration/DSL/ConstructorExpressionTester.cs
trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs
trunk/Source/StructureMap.Testing/Configuration/DSL/DeepInstanceTester.cs
trunk/Source/StructureMap.Testing/Configuration/DSL/InjectArrayTester.cs
trunk/Source/StructureMap.Testing/Configuration/DSL/InterceptAllInstancesOfPluginTypeTester.cs
trunk/Source/StructureMap.Testing/Configuration/DSL/InterceptorTesting.cs
trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs
trunk/Source/StructureMap.Testing/Container/ExplicitArgumentTester.cs
trunk/Source/StructureMap.Testing/Container/InstanceFactoryTester.cs
trunk/Source/StructureMap.Testing/Container/InstanceManagerTester.cs
trunk/Source/StructureMap.Testing/Container/Interceptors/TypeInterceptionTester.cs
trunk/Source/StructureMap.Testing/Container/TypeFindingTester.cs
trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs
Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs
===================================================================
--- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -32,7 +32,18 @@
});
}
+ public CreatePluginFamilyExpression<PLUGINTYPE> AddInstances(params Instance[] instances)
+ {
+ return alterAndContinue(delegate(PluginFamily family)
+ {
+ foreach (Instance instance in instances)
+ {
+ family.AddInstance(instance);
+ }
+ });
+ }
+
// TODO: 3.5, Try alterAndContinue(f => {});
private CreatePluginFamilyExpression<PLUGINTYPE> alterAndContinue(Action<PluginFamily> action)
{
Modified: trunk/Source/StructureMap/Configuration/DSL/Registry.cs
===================================================================
--- trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -7,7 +7,7 @@
namespace StructureMap.Configuration.DSL
{
- public class Registry : RegistryExpressions, IDisposable
+ public class Registry : RegistryExpressions
{
private readonly List<Action<PluginGraph>> _actions = new List<Action<PluginGraph>>();
private readonly PluginGraph _graph;
@@ -23,15 +23,6 @@
configure();
}
- #region IDisposable Members
-
- public void Dispose()
- {
- ConfigurePluginGraph(_graph);
- }
-
- #endregion
-
/// <summary>
/// Implement this method to
/// </summary>
@@ -86,12 +77,6 @@
return new CreatePluginFamilyExpression<PLUGINTYPE>(this);
}
- public IInstanceManager BuildInstanceManager()
- {
- ConfigurePluginGraph(_graph);
- return new InstanceManager(_graph);
- }
-
public PluginGraph Build()
{
ConfigurePluginGraph(_graph);
Modified: trunk/Source/StructureMap/Configuration/FamilyParser.cs
===================================================================
--- trunk/Source/StructureMap/Configuration/FamilyParser.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap/Configuration/FamilyParser.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -62,12 +62,12 @@
});
}
- private InstanceScope findScope(XmlElement familyElement)
+ private static InstanceScope findScope(XmlElement familyElement)
{
InstanceScope returnValue = InstanceScope.PerRequest;
string scopeString = familyElement.GetAttribute(XmlConstants.SCOPE_ATTRIBUTE);
- if (scopeString != null && scopeString != string.Empty)
+ if (!string.IsNullOrEmpty(scopeString))
{
returnValue = (InstanceScope) Enum.Parse(typeof (InstanceScope), scopeString);
}
Modified: trunk/Source/StructureMap/InstanceManager.cs
===================================================================
--- trunk/Source/StructureMap/InstanceManager.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap/InstanceManager.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -27,6 +27,10 @@
construct(registry.Build());
}
+ public InstanceManager(Registry registry) : this(registry.Build())
+ {
+ }
+
public InstanceManager() : this(new PluginGraph())
{
}
@@ -283,6 +287,5 @@
return _pipelineGraph.ForType(type);
}
-
}
}
\ No newline at end of file
Modified: trunk/Source/StructureMap/StructureMapConfiguration.cs
===================================================================
--- trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -166,7 +166,12 @@
return _registry.AddInstanceOf<T>();
}
+ public static void AddInstanceOf<T>(Instance instance)
+ {
+ _registry.ForRequestedType<T>().AddInstance(instance);
+ }
+
/// <summary>
/// Adds a preconfigured instance of Type T to StructureMap. When this instance is requested,
/// StructureMap will always return the original object.
Modified: trunk/Source/StructureMap.Testing/BuildSessionTester.cs
===================================================================
--- trunk/Source/StructureMap.Testing/BuildSessionTester.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap.Testing/BuildSessionTester.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -138,13 +138,13 @@
[Test]
public void If_no_child_array_is_explicitly_defined_return_all_instances()
{
- Registry registry = new Registry();
- registry.AddInstanceOf<IWidget>(new ColorWidget("Red"));
- registry.AddInstanceOf<IWidget>(new ColorWidget("Blue"));
- registry.AddInstanceOf<IWidget>(new ColorWidget("Green"));
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.AddInstanceOf<IWidget>(new ColorWidget("Red"));
+ registry.AddInstanceOf<IWidget>(new ColorWidget("Blue"));
+ registry.AddInstanceOf<IWidget>(new ColorWidget("Green"));
+ });
- IInstanceManager manager = registry.BuildInstanceManager();
-
WidgetHolder holder = manager.CreateInstance<WidgetHolder>();
Assert.AreEqual(3, holder.Widgets.Length);
}
Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs
===================================================================
--- trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -15,38 +15,38 @@
[SetUp]
public void SetUp()
{
- pluginGraph = new PluginGraph();
- Registry registry = new Registry(pluginGraph);
- registry.ScanAssemblies().IncludeAssemblyContainingType<ColorWidget>();
+
+ manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ScanAssemblies().IncludeAssemblyContainingType<ColorWidget>();
- // Add an instance with properties
- registry.AddInstanceOf<IWidget>()
- .UsingConcreteType<ColorWidget>()
- .WithName("DarkGreen")
- .WithProperty("Color").EqualTo("DarkGreen");
+ // Add an instance with properties
+ registry.AddInstanceOf<IWidget>()
+ .UsingConcreteType<ColorWidget>()
+ .WithName("DarkGreen")
+ .WithProperty("Color").EqualTo("DarkGreen");
- // Add an instance by specifying the ConcreteKey
- registry.AddInstanceOf<IWidget>()
- .UsingConcreteTypeNamed("Color")
- .WithName("Purple")
- .WithProperty("Color").EqualTo("Purple");
+ // Add an instance by specifying the ConcreteKey
+ registry.AddInstanceOf<IWidget>()
+ .UsingConcreteTypeNamed("Color")
+ .WithName("Purple")
+ .WithProperty("Color").EqualTo("Purple");
- // Pull a property from the App config
- registry.AddInstanceOf<IWidget>()
- .UsingConcreteType<ColorWidget>()
- .WithName("AppSetting")
- .WithProperty("Color").EqualToAppSetting("Color");
+ // Pull a property from the App config
+ registry.AddInstanceOf<IWidget>()
+ .UsingConcreteType<ColorWidget>()
+ .WithName("AppSetting")
+ .WithProperty("Color").EqualToAppSetting("Color");
- registry.AddInstanceOf<IWidget>().UsingConcreteType<AWidget>();
+ registry.AddInstanceOf<IWidget>().UsingConcreteType<AWidget>();
- manager = registry.BuildInstanceManager();
+ });
}
#endregion
private IInstanceManager manager;
- private PluginGraph pluginGraph;
[Test]
public void AddAnInstanceWithANameAndAPropertySpecifyingConcreteKey()
@@ -65,14 +65,13 @@
[Test]
public void AddInstanceAndOverrideTheConcreteTypeForADependency()
{
- Registry registry = new Registry();
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ // Specify a new Instance that specifies the concrete type used for a dependency
+ registry.AddInstanceOf<Rule>().UsingConcreteType<WidgetRule>().WithName("AWidgetRule")
+ .Child<IWidget>().IsConcreteType<AWidget>();
+ });
- // Specify a new Instance that specifies the concrete type used for a dependency
- registry.AddInstanceOf<Rule>().UsingConcreteType<WidgetRule>().WithName("AWidgetRule")
- .Child<IWidget>().IsConcreteType<AWidget>();
-
- manager = registry.BuildInstanceManager();
-
WidgetRule rule = (WidgetRule) manager.CreateInstance<Rule>("AWidgetRule");
Assert.IsInstanceOfType(typeof (AWidget), rule.Widget);
}
@@ -88,13 +87,12 @@
[Test]
public void SimpleCaseWithNamedInstance()
{
- Registry registry = new Registry();
+ manager = new InstanceManager(delegate(Registry registry)
+ {
+ // Specify a new Instance and override the Name
+ registry.AddInstanceOf<IWidget>().UsingConcreteType<AWidget>().WithName("MyInstance");
+ });
- // Specify a new Instance and override the Name
- registry.AddInstanceOf<IWidget>().UsingConcreteType<AWidget>().WithName("MyInstance");
-
- manager = registry.BuildInstanceManager();
-
AWidget widget = (AWidget) manager.CreateInstance<IWidget>("MyInstance");
Assert.IsNotNull(widget);
}
@@ -102,25 +100,21 @@
[Test]
public void SpecifyANewInstanceOverrideADependencyWithANamedInstance()
{
- Registry registry = new Registry();
+ manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.AddInstanceOf<Rule>().UsingConcreteType<ARule>().WithName("Alias");
- //registry.ScanAssemblies().IncludeAssemblyContainingType<IWidget>();
+ // Add an instance by specifying the ConcreteKey
+ registry.AddInstanceOf<IWidget>()
+ .UsingConcreteType<ColorWidget>()
+ .WithName("Purple")
+ .WithProperty("Color").EqualTo("Purple");
+ // Specify a new Instance, override a dependency with a named instance
+ registry.AddInstanceOf<Rule>().UsingConcreteType<WidgetRule>().WithName("RuleThatUsesMyInstance")
+ .Child<IWidget>("widget").IsNamedInstance("Purple");
+ });
- registry.AddInstanceOf<Rule>().UsingConcreteType<ARule>().WithName("Alias");
-
- // Add an instance by specifying the ConcreteKey
- registry.AddInstanceOf<IWidget>()
- .UsingConcreteType<ColorWidget>()
- .WithName("Purple")
- .WithProperty("Color").EqualTo("Purple");
-
- // Specify a new Instance, override a dependency with a named instance
- registry.AddInstanceOf<Rule>().UsingConcreteType<WidgetRule>().WithName("RuleThatUsesMyInstance")
- .Child<IWidget>("widget").IsNamedInstance("Purple");
-
- manager = registry.BuildInstanceManager();
-
Assert.IsInstanceOfType(typeof (ARule), manager.CreateInstance<Rule>("Alias"));
WidgetRule rule = (WidgetRule) manager.CreateInstance<Rule>("RuleThatUsesMyInstance");
@@ -131,21 +125,21 @@
[Test]
public void SpecifyANewInstanceWithADependency()
{
- Registry registry = new Registry();
-
// Specify a new Instance, create an instance for a dependency on the fly
string instanceKey = "OrangeWidgetRule";
- registry.AddInstanceOf<Rule>().UsingConcreteType<WidgetRule>().WithName(instanceKey)
- .Child<IWidget>().Is(
- Registry.Instance<IWidget>().UsingConcreteType<ColorWidget>()
- .WithProperty("Color").EqualTo("Orange")
- .WithName("Orange")
- );
- IInstanceManager mgr = registry.BuildInstanceManager();
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.AddInstanceOf<Rule>().UsingConcreteType<WidgetRule>().WithName(instanceKey)
+ .Child<IWidget>().Is(
+ Registry.Instance<IWidget>().UsingConcreteType<ColorWidget>()
+ .WithProperty("Color").EqualTo("Orange")
+ .WithName("Orange")
+ );
+ });
- WidgetRule rule = (WidgetRule) mgr.CreateInstance<Rule>(instanceKey);
+ WidgetRule rule = (WidgetRule) manager.CreateInstance<Rule>(instanceKey);
ColorWidget widget = (ColorWidget) rule.Widget;
Assert.AreEqual("Orange", widget.Color);
}
@@ -153,13 +147,15 @@
[Test]
public void UseAPreBuiltObjectForAnInstanceAsAPrototype()
{
- Registry registry = new Registry();
// Build an instance for IWidget, then setup StructureMap to return cloned instances of the
// "Prototype" (GoF pattern) whenever someone asks for IWidget named "Jeremy"
CloneableWidget theWidget = new CloneableWidget("Jeremy");
- registry.AddPrototypeInstanceOf<IWidget>(theWidget).WithName("Jeremy");
+
- manager = registry.BuildInstanceManager();
+ manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.AddPrototypeInstanceOf<IWidget>(theWidget).WithName("Jeremy");
+ });
CloneableWidget widget1 = (CloneableWidget) manager.CreateInstance<IWidget>("Jeremy");
CloneableWidget widget2 = (CloneableWidget) manager.CreateInstance<IWidget>("Jeremy");
@@ -178,12 +174,13 @@
[Test]
public void UseAPreBuiltObjectWithAName()
{
- Registry registry = new Registry();
// Return the specific instance when an IWidget named "Julia" is requested
CloneableWidget julia = new CloneableWidget("Julia");
- registry.AddInstanceOf<IWidget>(julia).WithName("Julia");
- manager = registry.BuildInstanceManager();
+ manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.AddInstanceOf<IWidget>(julia).WithName("Julia");
+ });
CloneableWidget widget1 = (CloneableWidget) manager.CreateInstance<IWidget>("Julia");
CloneableWidget widget2 = (CloneableWidget) manager.CreateInstance<IWidget>("Julia");
Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/AddTypesTester.cs
===================================================================
--- trunk/Source/StructureMap.Testing/Configuration/DSL/AddTypesTester.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap.Testing/Configuration/DSL/AddTypesTester.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -30,14 +30,15 @@
[Test]
public void A_concrete_type_is_available_by_name_when_it_is_added_by_the_shorthand_mechanism()
{
- Registry registry = new Registry();
- registry.ForRequestedType<IAddTypes>()
- .AddConcreteType<RedAddTypes>("Red")
- .AddConcreteType<GreenAddTypes>("Green")
- .AddConcreteType<BlueAddTypes>("Blue")
- .AddConcreteType<PurpleAddTypes>();
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<IAddTypes>()
+ .AddConcreteType<RedAddTypes>("Red")
+ .AddConcreteType<GreenAddTypes>("Green")
+ .AddConcreteType<BlueAddTypes>("Blue")
+ .AddConcreteType<PurpleAddTypes>();
+ });
- IInstanceManager manager = registry.BuildInstanceManager();
Assert.IsInstanceOfType(typeof (RedAddTypes), manager.CreateInstance<IAddTypes>("Red"));
Assert.IsInstanceOfType(typeof (GreenAddTypes), manager.CreateInstance<IAddTypes>("Green"));
Assert.IsInstanceOfType(typeof (BlueAddTypes), manager.CreateInstance<IAddTypes>("Blue"));
@@ -46,28 +47,33 @@
[Test]
public void A_concrete_type_is_available_when_it_is_added_by_the_shorthand_mechanism()
{
- Registry registry = new Registry();
- registry.ForRequestedType<IAddTypes>()
- .AddConcreteType<RedAddTypes>()
- .AddConcreteType<GreenAddTypes>()
- .AddConcreteType<BlueAddTypes>()
- .AddConcreteType<PurpleAddTypes>();
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<IAddTypes>()
+ .AddConcreteType<RedAddTypes>()
+ .AddConcreteType<GreenAddTypes>()
+ .AddConcreteType<BlueAddTypes>()
+ .AddConcreteType<PurpleAddTypes>();
+ });
- IList<IAddTypes> instances = registry.BuildInstanceManager().GetAllInstances<IAddTypes>();
+
+ IList<IAddTypes> instances = manager.GetAllInstances<IAddTypes>();
Assert.AreEqual(4, instances.Count);
}
[Test]
public void Make_sure_that_we_dont_double_dip_instances_when_we_register_a_type_with_a_name()
{
- Registry registry = new Registry();
- registry.ForRequestedType<IAddTypes>()
- .AddConcreteType<RedAddTypes>("Red")
- .AddConcreteType<GreenAddTypes>()
- .AddConcreteType<BlueAddTypes>("Blue")
- .AddConcreteType<PurpleAddTypes>();
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<IAddTypes>()
+ .AddConcreteType<RedAddTypes>("Red")
+ .AddConcreteType<GreenAddTypes>()
+ .AddConcreteType<BlueAddTypes>("Blue")
+ .AddConcreteType<PurpleAddTypes>();
+ });
- IList<IAddTypes> instances = registry.BuildInstanceManager().GetAllInstances<IAddTypes>();
+ IList<IAddTypes> instances = manager.GetAllInstances<IAddTypes>();
Assert.AreEqual(4, instances.Count);
}
}
Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/ConstructorExpressionTester.cs
===================================================================
--- trunk/Source/StructureMap.Testing/Configuration/DSL/ConstructorExpressionTester.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap.Testing/Configuration/DSL/ConstructorExpressionTester.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -31,17 +31,15 @@
Concretion concretion1 = new Concretion();
Concretion concretion2 = new Concretion();
- Registry registry = new Registry();
- registry.ForRequestedType<Abstraction>()
- .AddInstance(
- ConstructedBy<Abstraction>(delegate { return concretion1; }).WithName("One")
- )
- .AddInstance(
- ConstructedBy<Abstraction>(delegate { return concretion2; }).WithName("Two")
- );
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<Abstraction>()
+ .AddInstances(
+ ConstructedBy<Abstraction>(delegate { return concretion1; }).WithName("One"),
+ ConstructedBy<Abstraction>(delegate { return concretion2; }).WithName("Two")
+ );
+ });
- IInstanceManager manager = registry.BuildInstanceManager();
-
Assert.AreSame(concretion1, manager.CreateInstance<Abstraction>("One"));
Assert.AreSame(concretion2, manager.CreateInstance<Abstraction>("Two"));
}
@@ -51,12 +49,13 @@
{
Concretion concretion = new Concretion();
- Registry registry = new Registry();
- registry.ForRequestedType<Abstraction>().TheDefaultIs(
- ConstructedBy<Abstraction>(delegate { return concretion; })
- );
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<Abstraction>().TheDefaultIs(
+ ConstructedBy<Abstraction>(delegate { return concretion; })
+ );
+ });
- IInstanceManager manager = registry.BuildInstanceManager();
Assert.AreSame(concretion, manager.CreateInstance<Abstraction>());
}
@@ -66,17 +65,17 @@
Concretion concretion1 = new Concretion();
Concretion concretion2 = new Concretion();
- Registry registry = new Registry();
- registry.ForRequestedType<Abstraction>().AddInstance(
- ConstructedBy<Abstraction>(delegate { return concretion1; }).WithName("One")
- );
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<Abstraction>().AddInstance(
+ ConstructedBy<Abstraction>(delegate { return concretion1; }).WithName("One")
+ );
- registry.ForRequestedType<Abstraction>().AddInstance(
- ConstructedBy<Abstraction>(delegate { return concretion2; }).WithName("Two")
- );
+ registry.ForRequestedType<Abstraction>().AddInstance(
+ ConstructedBy<Abstraction>(delegate { return concretion2; }).WithName("Two")
+ );
+ });
- IInstanceManager manager = registry.BuildInstanceManager();
-
Assert.AreSame(concretion1, manager.CreateInstance<Abstraction>("One"));
Assert.AreSame(concretion2, manager.CreateInstance<Abstraction>("Two"));
}
@@ -86,14 +85,13 @@
{
Concretion concretion = new Concretion();
- Registry registry = new Registry();
- registry.ForRequestedType<Abstraction>().AddInstance(
- ConstructedBy<Abstraction>(delegate { return concretion; })
- );
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<Abstraction>().AddInstance(
+ ConstructedBy<Abstraction>(delegate { return concretion; })
+ );
+ });
-
- IInstanceManager manager = registry.BuildInstanceManager();
-
Abstraction actual = manager.GetAllInstances<Abstraction>()[0];
Assert.AreSame(concretion, actual);
}
Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs
===================================================================
--- trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -5,7 +5,6 @@
using StructureMap.Configuration.DSL;
using StructureMap.Configuration.DSL.Expressions;
using StructureMap.Graph;
-using StructureMap.Interceptors;
using StructureMap.Pipeline;
using StructureMap.Testing.Widget;
using StructureMap.Testing.Widget3;
@@ -37,14 +36,36 @@
}
[Test]
- public void AddInstanceByNameOnlyAddsOneInstanceToStructureMap()
+ public void Add_an_instance_by_lambda()
{
- Registry registry = new Registry();
- registry.ForRequestedType<Something>().AddInstance(
- Registry.Instance<Something>().UsingConcreteType<RedSomething>().WithName("Red")
- );
+ InstanceManager manager =
+ new InstanceManager(
+ delegate(Registry registry) { registry.ForRequestedType<IWidget>().AddInstance(delegate { return new AWidget(); }); });
- IInstanceManager manager = registry.BuildInstanceManager();
+ Assert.IsInstanceOfType(typeof (AWidget), manager.GetAllInstances<IWidget>()[0]);
+ }
+
+ [Test]
+ public void Add_an_instance_by_literal()
+ {
+ AWidget aWidget = new AWidget();
+
+ InstanceManager manager =
+ new InstanceManager(
+ delegate(Registry registry) { registry.ForRequestedType<IWidget>().AddInstance(aWidget); });
+
+ Assert.IsInstanceOfType(typeof (AWidget), manager.GetAllInstances<IWidget>()[0]);
+ }
+
+ [Test]
+ public void AddInstanceByNameOnlyAddsOneInstanceToStructureMap()
+ {
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<Something>().AddInstance(
+ RegistryExpressions.Instance<Something>().UsingConcreteType<RedSomething>().WithName("Red")
+ );
+ });
IList<Something> instances = manager.GetAllInstances<Something>();
Assert.AreEqual(1, instances.Count);
}
@@ -52,12 +73,10 @@
[Test]
public void AddInstanceWithNameOnlyAddsOneInstanceToStructureMap()
{
- PluginGraph graph = new PluginGraph();
- Registry registry = new Registry(graph);
- registry.AddInstanceOf<Something>().UsingConcreteType<RedSomething>().WithName("Red");
-
-
- IInstanceManager manager = registry.BuildInstanceManager();
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.AddInstanceOf<Something>().UsingConcreteType<RedSomething>().WithName("Red");
+ });
IList<Something> instances = manager.GetAllInstances<Something>();
Assert.AreEqual(1, instances.Count);
}
@@ -65,72 +84,64 @@
[Test]
public void AsAnotherScope()
{
- PluginGraph pluginGraph = new PluginGraph();
- using (Registry registry = new Registry(pluginGraph))
- {
- CreatePluginFamilyExpression<IGateway> expression =
- registry.BuildInstancesOf<IGateway>().CacheBy(InstanceScope.ThreadLocal);
- Assert.IsNotNull(expression);
- }
+ Registry registry = new Registry();
+ CreatePluginFamilyExpression<IGateway> expression =
+ registry.BuildInstancesOf<IGateway>().CacheBy(InstanceScope.ThreadLocal);
+ Assert.IsNotNull(expression);
+ PluginGraph pluginGraph = registry.Build();
+
PluginFamily family = pluginGraph.FindFamily(typeof (IGateway));
- Assert.IsInstanceOfType(typeof(ThreadLocalStoragePolicy), family.Policy);
+ Assert.IsInstanceOfType(typeof (ThreadLocalStoragePolicy), family.Policy);
}
[Test]
public void BuildInstancesOfType()
{
- PluginGraph pluginGraph = new PluginGraph();
- using (Registry registry = new Registry(pluginGraph))
- {
- registry.BuildInstancesOf<IGateway>();
- }
+ Registry registry = new Registry();
+ registry.BuildInstancesOf<IGateway>();
+ PluginGraph pluginGraph = registry.Build();
- Assert.IsTrue(pluginGraph.ContainsFamily(typeof(IGateway)));
+ Assert.IsTrue(pluginGraph.ContainsFamily(typeof (IGateway)));
}
[Test]
public void BuildPluginFamilyAsPerRequest()
{
- PluginGraph pluginGraph = new PluginGraph();
- using (Registry registry = new Registry(pluginGraph))
- {
- CreatePluginFamilyExpression<IGateway> expression =
- registry.BuildInstancesOf<IGateway>();
- Assert.IsNotNull(expression);
- }
+ Registry registry = new Registry();
+ CreatePluginFamilyExpression<IGateway> expression =
+ registry.BuildInstancesOf<IGateway>();
+ Assert.IsNotNull(expression);
+ PluginGraph pluginGraph = registry.Build();
+
PluginFamily family = pluginGraph.FindFamily(typeof (IGateway));
- Assert.IsInstanceOfType(typeof(BuildPolicy), family.Policy);
+ Assert.IsInstanceOfType(typeof (BuildPolicy), family.Policy);
}
[Test]
public void BuildPluginFamilyAsSingleton()
{
- PluginGraph pluginGraph = new PluginGraph();
- using (Registry registry = new Registry(pluginGraph))
- {
- CreatePluginFamilyExpression<IGateway> expression =
- registry.BuildInstancesOf<IGateway>().AsSingletons();
- Assert.IsNotNull(expression);
- }
+ Registry registry = new Registry();
+ CreatePluginFamilyExpression<IGateway> expression =
+ registry.BuildInstancesOf<IGateway>().AsSingletons();
+ Assert.IsNotNull(expression);
+ PluginGraph pluginGraph = registry.Build();
PluginFamily family = pluginGraph.FindFamily(typeof (IGateway));
- Assert.IsInstanceOfType(typeof(SingletonPolicy), family.Policy);
+ Assert.IsInstanceOfType(typeof (SingletonPolicy), family.Policy);
}
[Test]
public void CanOverrideTheDefaultInstance1()
{
- PluginGraph pluginGraph = new PluginGraph();
- using (Registry registry = new Registry(pluginGraph))
- {
- // Specify the default implementation for an interface
- registry.BuildInstancesOf<IGateway>().TheDefaultIsConcreteType<StubbedGateway>();
- }
+ Registry registry = new Registry();
+ // Specify the default implementation for an interface
+ registry.BuildInstancesOf<IGateway>().TheDefaultIsConcreteType<StubbedGateway>();
- Assert.IsTrue(pluginGraph.ContainsFamily(typeof(IGateway)));
+ PluginGraph pluginGraph = registry.Build();
+ Assert.IsTrue(pluginGraph.ContainsFamily(typeof (IGateway)));
InstanceManager manager = new InstanceManager(pluginGraph);
IGateway gateway = (IGateway) manager.CreateInstance(typeof (IGateway));
@@ -141,13 +152,11 @@
[Test]
public void CanOverrideTheDefaultInstanceAndCreateAnAllNewPluginOnTheFly()
{
- PluginGraph pluginGraph = new PluginGraph();
- using (Registry registry = new Registry(pluginGraph))
- {
- registry.BuildInstancesOf<IGateway>().TheDefaultIsConcreteType<FakeGateway>();
- }
+ Registry registry = new Registry();
+ registry.BuildInstancesOf<IGateway>().TheDefaultIsConcreteType<FakeGateway>();
+ PluginGraph pluginGraph = registry.Build();
- Assert.IsTrue(pluginGraph.ContainsFamily(typeof(IGateway)));
+ Assert.IsTrue(pluginGraph.ContainsFamily(typeof (IGateway)));
InstanceManager manager = new InstanceManager(pluginGraph);
IGateway gateway = (IGateway) manager.CreateInstance(typeof (IGateway));
@@ -158,13 +167,14 @@
[Test]
public void CreatePluginFamilyWithADefault()
{
- Registry registry = new Registry();
- registry.BuildInstancesOf<IWidget>().TheDefaultIs(
- Registry.Instance<IWidget>().UsingConcreteType<ColorWidget>().WithProperty("Color").EqualTo("Red")
- );
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.BuildInstancesOf<IWidget>().TheDefaultIs(
+ RegistryExpressions.Instance<IWidget>().UsingConcreteType<ColorWidget>().WithProperty("Color").EqualTo(
+ "Red")
+ );
+ });
- IInstanceManager manager = registry.BuildInstanceManager();
-
ColorWidget widget = (ColorWidget) manager.CreateInstance<IWidget>();
Assert.AreEqual("Red", widget.Color);
}
@@ -174,44 +184,22 @@
{
StubbedInstanceFactoryInterceptor factoryInterceptor = new StubbedInstanceFactoryInterceptor();
- PluginGraph pluginGraph = new PluginGraph();
- using (Registry registry = new Registry(pluginGraph))
- {
- registry.BuildInstancesOf<IGateway>().InterceptConstructionWith(factoryInterceptor);
- }
-
- Assert.AreSame(pluginGraph.FindFamily(typeof(IGateway)).Policy, factoryInterceptor);
- }
-
- [Test]
- public void TheDefaultInstanceIsConcreteType()
- {
Registry registry = new Registry();
+ registry.BuildInstancesOf<IGateway>().InterceptConstructionWith(factoryInterceptor);
- // Needs to blow up if the concrete type can't be used
- registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<ARule>();
+ PluginGraph pluginGraph = registry.Build();
- IInstanceManager manager = registry.BuildInstanceManager();
-
- Assert.IsInstanceOfType(typeof (ARule), manager.CreateInstance<Rule>());
+ Assert.AreSame(pluginGraph.FindFamily(typeof (IGateway)).Policy, factoryInterceptor);
}
[Test]
- public void TheDefaultInstanceIsPickedUpFromTheAttribute()
+ public void Set_the_default_by_a_lambda()
{
- PluginGraph pluginGraph = new PluginGraph();
- using (Registry registry = new Registry(pluginGraph))
- {
- registry.BuildInstancesOf<IGateway>();
- registry.ScanAssemblies().IncludeAssemblyContainingType<IGateway>();
- }
+ InstanceManager manager =
+ new InstanceManager(
+ delegate(Registry registry) { registry.ForRequestedType<IWidget>().TheDefaultIs(delegate { return new AWidget(); }); });
- Assert.IsTrue(pluginGraph.ContainsFamily(typeof(IGateway)));
-
- InstanceManager manager = new InstanceManager(pluginGraph);
- IGateway gateway = (IGateway) manager.CreateInstance(typeof (IGateway));
-
- Assert.IsInstanceOfType(typeof (DefaultGateway), gateway);
+ Assert.IsInstanceOfType(typeof (AWidget), manager.CreateInstance<IWidget>());
}
[Test]
@@ -219,56 +207,51 @@
{
AWidget aWidget = new AWidget();
- InstanceManager manager = new InstanceManager(delegate(Registry registry)
- {
- registry.ForRequestedType<IWidget>().TheDefaultIs(aWidget);
- });
+ InstanceManager manager =
+ new InstanceManager(
+ delegate(Registry registry) { registry.ForRequestedType<IWidget>().TheDefaultIs(aWidget); });
Assert.AreSame(aWidget, manager.CreateInstance<IWidget>());
}
[Test]
- public void Set_the_default_by_a_lambda()
+ public void TheDefaultInstanceIsConcreteType()
{
- InstanceManager manager = new InstanceManager(delegate(Registry registry)
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
{
- registry.ForRequestedType<IWidget>().TheDefaultIs(delegate() { return new AWidget(); });
+ // Needs to blow up if the concrete type can't be used
+ registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<ARule>();
});
- Assert.IsInstanceOfType(typeof(AWidget), manager.CreateInstance<IWidget>());
+ Assert.IsInstanceOfType(typeof (ARule), manager.CreateInstance<Rule>());
}
[Test]
- public void Add_an_instance_by_literal()
+ public void TheDefaultInstanceIsPickedUpFromTheAttribute()
{
- AWidget aWidget = new AWidget();
+ Registry registry = new Registry();
+ registry.BuildInstancesOf<IGateway>();
+ registry.ScanAssemblies().IncludeAssemblyContainingType<IGateway>();
- InstanceManager manager = new InstanceManager(delegate(Registry registry)
- {
- registry.ForRequestedType<IWidget>().AddInstance(aWidget);
- });
+ PluginGraph pluginGraph = registry.Build();
- Assert.IsInstanceOfType(typeof(AWidget), manager.GetAllInstances<IWidget>()[0]);
- }
+ Assert.IsTrue(pluginGraph.ContainsFamily(typeof (IGateway)));
- [Test]
- public void Add_an_instance_by_lambda()
- {
- InstanceManager manager = new InstanceManager(delegate(Registry registry)
- {
- registry.ForRequestedType<IWidget>().AddInstance(delegate() { return new AWidget(); });
- });
+ InstanceManager manager = new InstanceManager(pluginGraph);
+ IGateway gateway = (IGateway) manager.CreateInstance(typeof (IGateway));
- Assert.IsInstanceOfType(typeof(AWidget), manager.GetAllInstances<IWidget>()[0]);
+ Assert.IsInstanceOfType(typeof (DefaultGateway), gateway);
}
}
public class StubbedInstanceFactoryInterceptor : IBuildInterceptor
{
+ #region IBuildInterceptor Members
+
public IBuildPolicy InnerPolicy
{
get { throw new NotImplementedException(); }
- set { }
+ set { }
}
public object Build(IBuildSession buildSession, Type pluginType, Instance instance)
@@ -280,5 +263,7 @@
{
throw new NotImplementedException();
}
+
+ #endregion
}
}
\ No newline at end of file
Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/DeepInstanceTester.cs
===================================================================
--- trunk/Source/StructureMap.Testing/Configuration/DSL/DeepInstanceTester.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap.Testing/Configuration/DSL/DeepInstanceTester.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -1,19 +1,18 @@
using NUnit.Framework;
using StructureMap.Configuration.DSL;
-using StructureMap.Configuration.DSL.Expressions;
using StructureMap.Pipeline;
using StructureMap.Testing.Widget;
namespace StructureMap.Testing.Configuration.DSL
{
[TestFixture]
- public class DeepInstanceTester
+ public class DeepInstanceTester : RegistryExpressions
{
- private Thing _prototype = new Thing(4, "Jeremy", .333, new WidgetRule(new ColorWidget("yellow")));
+ private readonly Thing _prototype = new Thing(4, "Jeremy", .333, new WidgetRule(new ColorWidget("yellow")));
- private void assertThingMatches(Registry registry)
+ private void assertThingMatches(Action<Registry> action)
{
- IInstanceManager manager = registry.BuildInstanceManager();
+ IInstanceManager manager = new InstanceManager(action);
Thing actual = manager.CreateInstance<Thing>();
Assert.AreEqual(_prototype, actual);
}
@@ -21,129 +20,129 @@
[Test]
public void DeepInstance2()
{
- Registry registry = new Registry();
- registry.BuildInstancesOf<IWidget>().TheDefaultIs(
- Registry.Instance<IWidget>().UsingConcreteType<ColorWidget>()
- .WithProperty("Color").EqualTo("yellow")
- );
+ assertThingMatches(delegate(Registry registry)
+ {
+ registry.BuildInstancesOf<IWidget>().TheDefaultIs(
+ Instance<IWidget>().UsingConcreteType<ColorWidget>()
+ .WithProperty("Color").EqualTo("yellow")
+ );
- registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>();
+ registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>();
- registry.BuildInstancesOf<Thing>().TheDefaultIs(
- Registry.Instance<Thing>()
- .UsingConcreteType<Thing>()
- .WithProperty("average").EqualTo(.333)
- .WithProperty("name").EqualTo("Jeremy")
- .WithProperty("count").EqualTo(4)
- );
-
- assertThingMatches(registry);
+ registry.BuildInstancesOf<Thing>().TheDefaultIs(
+ Instance<Thing>()
+ .UsingConcreteType<Thing>()
+ .WithProperty("average").EqualTo(.333)
+ .WithProperty("name").EqualTo("Jeremy")
+ .WithProperty("count").EqualTo(4)
+ );
+ });
}
[Test]
public void DeepInstance3()
{
- Registry registry = new Registry();
- registry.BuildInstancesOf<IWidget>().TheDefaultIs(
- Registry.Object<IWidget>(new ColorWidget("yellow"))
- );
+ assertThingMatches(delegate(Registry registry)
+ {
+ registry.BuildInstancesOf<IWidget>().TheDefaultIs(
+ Object<IWidget>(new ColorWidget("yellow"))
+ );
- registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>();
+ registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>();
- registry.BuildInstancesOf<Thing>().TheDefaultIs(
- Registry.Instance<Thing>()
- .UsingConcreteType<Thing>()
- .WithProperty("average").EqualTo(.333)
- .WithProperty("name").EqualTo("Jeremy")
- .WithProperty("count").EqualTo(4)
- );
-
- assertThingMatches(registry);
+ registry.BuildInstancesOf<Thing>().TheDefaultIs(
+ Instance<Thing>()
+ .UsingConcreteType<Thing>()
+ .WithProperty("average").EqualTo(.333)
+ .WithProperty("name").EqualTo("Jeremy")
+ .WithProperty("count").EqualTo(4)
+ );
+ });
}
[Test]
public void DeepInstance4()
{
- Registry registry = new Registry();
- registry.BuildInstancesOf<IWidget>().TheDefaultIs(
- Registry.Prototype<IWidget>(new ColorWidget("yellow"))
- );
+ assertThingMatches(delegate(Registry registry)
+ {
+ registry.BuildInstancesOf<IWidget>().TheDefaultIs(
+ Prototype<IWidget>(new ColorWidget("yellow"))
+ );
- registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>();
+ registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>();
- registry.BuildInstancesOf<Thing>().TheDefaultIs(
- Registry.Instance<Thing>()
- .UsingConcreteType<Thing>()
- .WithProperty("average").EqualTo(.333)
- .WithProperty("name").EqualTo("Jeremy")
- .WithProperty("count").EqualTo(4)
- );
-
- assertThingMatches(registry);
+ registry.BuildInstancesOf<Thing>().TheDefaultIs(
+ Instance<Thing>()
+ .UsingConcreteType<Thing>()
+ .WithProperty("average").EqualTo(.333)
+ .WithProperty("name").EqualTo("Jeremy")
+ .WithProperty("count").EqualTo(4)
+ );
+ });
}
[Test]
public void DeepInstance5()
{
- Registry registry = new Registry();
+ assertThingMatches(delegate(Registry registry)
+ {
+ registry.AddInstanceOf<IWidget>()
+ .UsingConcreteType<ColorWidget>()
+ .WithName("Yellow")
+ .WithProperty("Color").EqualTo("yellow");
- registry.AddInstanceOf<IWidget>()
- .UsingConcreteType<ColorWidget>()
- .WithName("Yellow")
- .WithProperty("Color").EqualTo("yellow");
+ registry.AddInstanceOf<Rule>()
+ .UsingConcreteType<WidgetRule>()
+ .WithName("TheWidgetRule")
+ .Child<IWidget>().IsNamedInstance("Yellow");
- registry.AddInstanceOf<Rule>()
- .UsingConcreteType<WidgetRule>()
- .WithName("TheWidgetRule")
- .Child<IWidget>().IsNamedInstance("Yellow");
-
- registry.BuildInstancesOf<Thing>().TheDefaultIs(
- Registry.Instance<Thing>()
- .UsingConcreteType<Thing>()
- .WithProperty("average").EqualTo(.333)
- .WithProperty("name").EqualTo("Jeremy")
- .WithProperty("count").EqualTo(4)
- .Child<Rule>().IsNamedInstance("TheWidgetRule")
- );
-
- assertThingMatches(registry);
+ registry.BuildInstancesOf<Thing>().TheDefaultIs(
+ Instance<Thing>()
+ .UsingConcreteType<Thing>()
+ .WithProperty("average").EqualTo(.333)
+ .WithProperty("name").EqualTo("Jeremy")
+ .WithProperty("count").EqualTo(4)
+ .Child<Rule>().IsNamedInstance("TheWidgetRule")
+ );
+ });
}
[Test]
public void DeepInstanceTest1()
{
- Registry registry = new Registry();
- ConfiguredInstance widgetExpression = Registry.Instance<IWidget>()
+ ConfiguredInstance widgetExpression = Instance<IWidget>()
.UsingConcreteType<ColorWidget>()
.WithProperty("Color").EqualTo("yellow");
- ConfiguredInstance ruleExpression = Registry.Instance<Rule>()
+ ConfiguredInstance ruleExpression = Instance<Rule>()
.UsingConcreteType<WidgetRule>()
.Child<IWidget>().Is(widgetExpression);
- registry.BuildInstancesOf<Thing>().TheDefaultIs(
- Registry.Instance<Thing>()
- .UsingConcreteType<Thing>()
- .WithProperty("name").EqualTo("Jeremy")
- .WithProperty("count").EqualTo(4)
- .WithProperty("average").EqualTo(.333)
- .Child<Rule>().Is(
- ruleExpression
- )
- );
- assertThingMatches(registry);
+ assertThingMatches(delegate(Registry registry)
+ {
+ registry.BuildInstancesOf<Thing>().TheDefaultIs(
+ Instance<Thing>()
+ .UsingConcreteType<Thing>()
+ .WithProperty("name").EqualTo("Jeremy")
+ .WithProperty("count").EqualTo(4)
+ .WithProperty("average").EqualTo(.333)
+ .Child<Rule>().Is(
+ ruleExpression
+ )
+ );
+ });
}
}
public class Thing
{
- private double _average;
- private int _count;
- private string _name;
- private Rule _rule;
+ private readonly double _average;
+ private readonly int _count;
+ private readonly string _name;
+ private readonly Rule _rule;
public Thing(int count, string name, double average, Rule rule)
Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/InjectArrayTester.cs
===================================================================
--- trunk/Source/StructureMap.Testing/Configuration/DSL/InjectArrayTester.cs 2008-05-27 23:46:15 UTC (rev 104)
+++ trunk/Source/StructureMap.Testing/Configuration/DSL/InjectArrayTester.cs 2008-05-28 03:15:34 UTC (rev 105)
@@ -4,7 +4,7 @@
namespace StructureMap.Testing.Configuration.DSL
{
[TestFixture]
- public class InjectArrayTester
+ public class InjectArrayTester : RegistryExpressions
{
#region Setup/Teardown
@@ -41,8 +41,8 @@
public class Processor2
{
- private IHandler[] _first;
- private IHandler[] _second;
+ private readonly IHandler[] _first;
+ private readonly IHandler[] _second;
public Processor2(IHandler[] first, IHandler[] second)
@@ -82,44 +82,44 @@
[Test]
public void CanStillAddOtherPropertiesAfterTheCallToChildArray()
{
- Registry registry = new Registry();
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<Processor>()
+ .TheDefaultIs(
+ Instance<Processor>().UsingConcreteType<Processor>()
+ .ChildArray<IHandler[]>().Contains(
+ Instance<IHandler>().UsingConcreteType<Handler1>(),
+ Instance<IHandler>().UsingConcreteType<Handler2>(),
+ Instance<IHandler>().UsingConcreteType<Handler3>()
+ )
+ .WithProperty("name").EqualTo("Jeremy")
+ );
+ });
- registry.ForRequestedType<Processor>()
- .TheDefaultIs(
- Registry.Instance<Processor>().UsingConcreteType<Processor>()
- .ChildArray<IHandler[]>().Contains(
- Registry.Instance<IHandler>().UsingConcreteType<Handler1>(),
- Registry.Instance<IHandler>().UsingConcreteType<Handler2>(),
- Registry.Instance<IHandler>().UsingConcreteType<Handler3>()
- )
- .WithProperty("name").EqualTo("Jeremy")
- );
-
- IInstanceManager manager = registry.BuildInstanceManager();
Processor processor = manager.CreateInstance<Processor>();
-
Assert.AreEqual("Jeremy", processor.Name);
}
[Test]
public void InjectPropertiesByName()
{
- Registry registry = new Registry();
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<Processor2>()
+ .TheDefaultIs(
+ Instance<Processor2>().UsingConcreteType<Processor2>()
+ .ChildArray<IHandler[]>("first").Contains(
+ Instance<IHandler>().UsingConcreteType<Handler1>(),
+ Instance<IHandler>().UsingConcreteType<Handler2>()
+ )
+ .ChildArray<IHandler[]>("second").Contains(
+ Instance<IHandler>().UsingConcreteType<Handler2>(),
+ Instance<IHandler>().UsingConcreteType<Handler3>()
+ )
+ );
+ });
- registry.ForRequestedType<Processor2>()
- .TheDefaultIs(
- Registry.Instance<Processor2>().UsingConcreteType<Processor2>()
- .ChildArray<IHandler[]>("first").Contains(
- Registry.Instance<IHandler>().UsingConcreteType<Handler1>(),
- Registry.Instance<IHandler>().UsingConcreteType<Handler2>()
- )
- .ChildArray<IHandler[]>("second").Contains(
- Registry.Instance<IHandler>().UsingConcreteType<Handler2>(),
- Registry.Instance<IHandler>().UsingConcreteType<Handler3>()
- )
- );
- IInstanceManager manager = registry.BuildInstanceManager();
Processor2 processor = manager.CreateInstance<Processor2>();
Assert.IsInstanceOfType(typeof (Handler1), processor.First[0]);
@@ -131,21 +131,21 @@
[Test,
ExpectedException(typeof (StructureMapException),
ExpectedMessage =
- "StructureMap Exception Code: 307\nIn the call to ChildArray<T>(), the type T must be an array")]
+ "StructureMap Exception Code: 307\nIn the call to ChildArray<T>(), the type T must be an array")]
public void InjectPropertiesByNameButUseTheElementType()
{
Registry registry = new Registry();
registry.ForRequestedType<Processor2>()
.TheDefaultIs(
- Registry.Instance<Processor2>().UsingConcreteType<Processor2>()
+ Instance<Processor2>().UsingConcreteType<Processor2>()
.ChildArray<IHandler>("first").Contains(
- Registry.Instance<IHandler>().UsingConcreteType<Handler1>(),
- Registry.Instance<IHandler>().UsingConcreteType<Handler2>()
+ Instance<IHandler>().UsingConcreteType<Handler1>(),
+ Instance<IHandler>().UsingConcreteType<Handler2>()
)
.ChildArray<IHandler[]>("second").Contains(
- Registry.Instance<IHandler>().UsingConcreteType<Handler2>(),
- Registry.Instance<IHandler>().UsingConcreteType<Handler3>()
+ Instance<IHandler>().UsingConcreteType<Handler2>(),
+ Instance<IHandler>().UsingConcreteType<Handler3>()
)
);
}
@@ -153,21 +153,22 @@
[Test]
public void PlaceMemberInArrayByReference()
{
- Registry registry = new Registry();
- registry.AddInstanceOf<IHandler>().UsingConcreteType<Handler1>().WithName("One");
- registry.AddInstanceOf<IHandler>().UsingConcreteType<Handler2>().WithName("Two");
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.AddInstanceOf<IHandler>().UsingConcreteType<Handler1>().WithName("One");
+ registry.AddInstanceOf<IHandler>().UsingConcreteType<Handler2>().WithName("Two");
- registry.ForRequestedType<Processor>()
- .TheDefaultIs(
- Registry.Instance<Processor>().UsingConcreteType<Processor>()
- .WithProperty("name").EqualTo("Jeremy")
- .ChildArray<IHandler[]>().Contains(
- Registry.Instance("Two"),
- Registry.Instance("One")
- )
- );
+ registry.ForRequestedType<Processor>()
+ .TheDefaultIs(
+ Instance<Processor>().UsingConcreteType<Processor>()
+ .WithProperty("name").EqualTo("Jeremy")
+ .ChildArray<IHandler[]>().Contains(
+ Instance("Two"),
+ Instance("One")
+ )
+ );
+ });
- IInstanceManager manager = registry.BuildInstanceManager();
Processor processor = manager.CreateInstance<Processor>();
Assert.IsInstanceOfType(typeof (Handler2), processor.Handlers[0]);
@@ -177,20 +178,20 @@
[Test]
public void ProgrammaticallyInjectArrayAllInline()
{
- Registry registry = new Registry();
+ IInstanceManager manager = new InstanceManager(delegate(Registry registry)
+ {
+ registry.ForRequestedType<Processor>()
+ .TheDefaultIs(
+ Instance<Processor>()
+ .ChildArray<IHandler[]>().Contains(
+ Instance<IHandler>().UsingConcreteType<Handler1>(),
+ Instance<IHandler>().UsingConcreteType<Handler2>(),
+ Instance<IHandler>().UsingConcreteType<Handler3>()
+ )
+ .WithProperty("name").EqualTo("Jeremy")
+ );
+ });
- registry.ForRequestedType<Processor>()
- .TheDefaultIs(
- Registry.Instance<Processor>().UsingConcreteType<Processor>()
- .ChildArray<IHandler[]>().Contains(
- Registry.Instance<IHandler>().UsingConcreteType<Handler1>(),
- Registry.Instance<IHandler>().UsingConcreteType<Handler2>(),
- Registry.Instance<IHandler>().UsingConcreteType<Handler3>()
- )
- .WithProperty("name").EqualTo("Jeremy")
- );
-
- IInstanceManager manager = registry.BuildInstanceManager();
Processor processor = manager.CreateInstance<Processor>();
Assert.IsInstanceOfType(typeof (Handler1), processor.Handlers[0]);
@@ -201,17 +202,17 @@
[Test,
ExpectedException(typeof (StructureMapException),
...
[truncated message content] |