# HG changeset patch
# User Steven Robbins
# Date 1295247751 0
# Node ID 9569cf22edf5be9380102435107ed7c6694c451f
# Parent aafb438ec863d4bfbd4745dc7041a1ea5033895f
Refactored ASP.Net support into a separate file - no need now for defines for monotouch.
ASP.Net lifetime support is now an extension method inside TinyIoCAspNetExtensions.cs
diff -r aafb438ec863d4bfbd4745dc7041a1ea5033895f -r 9569cf22edf5be9380102435107ed7c6694c451f platformtests/ASPNet/MvcTestApplication/MvcTestApplication/Global.asax.cs
--- a/platformtests/ASPNet/MvcTestApplication/MvcTestApplication/Global.asax.cs Sat Jan 15 13:58:23 2011 +0000
+++ b/platformtests/ASPNet/MvcTestApplication/MvcTestApplication/Global.asax.cs Mon Jan 17 07:02:31 2011 +0000
@@ -4,6 +4,7 @@
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
+using TinyIoC;
namespace MvcTestApplication
{
diff -r aafb438ec863d4bfbd4745dc7041a1ea5033895f -r 9569cf22edf5be9380102435107ed7c6694c451f platformtests/ASPNet/MvcTestApplication/MvcTestApplication/MvcTestApplication.csproj
--- a/platformtests/ASPNet/MvcTestApplication/MvcTestApplication/MvcTestApplication.csproj Sat Jan 15 13:58:23 2011 +0000
+++ b/platformtests/ASPNet/MvcTestApplication/MvcTestApplication/MvcTestApplication.csproj Mon Jan 17 07:02:31 2011 +0000
@@ -68,6 +68,9 @@
TinyIoC\TinyIoC.cs
+
+ TinyIoC\TinyIoCAspNetExtensions.cs
+
diff -r aafb438ec863d4bfbd4745dc7041a1ea5033895f -r 9569cf22edf5be9380102435107ed7c6694c451f src/TinyIoC.Tests/Fakes/FakeLifetimeProvider.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/TinyIoC.Tests/Fakes/FakeLifetimeProvider.cs Mon Jan 17 07:02:31 2011 +0000
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace TinyIoC.Tests.Fakes
+{
+ public class FakeLifetimeProvider : TinyIoC.TinyIoCContainer.ITinyIoCObjectLifetimeProvider
+ {
+ public object TheObject { get; set; }
+
+ public object GetObject()
+ {
+ return TheObject;
+ }
+
+ public void SetObject(object value)
+ {
+ TheObject = value;
+ }
+
+ public void ReleaseObject()
+ {
+ TheObject = null;
+ }
+ }
+}
diff -r aafb438ec863d4bfbd4745dc7041a1ea5033895f -r 9569cf22edf5be9380102435107ed7c6694c451f src/TinyIoC.Tests/TinyIoC.Tests.csproj
--- a/src/TinyIoC.Tests/TinyIoC.Tests.csproj Sat Jan 15 13:58:23 2011 +0000
+++ b/src/TinyIoC.Tests/TinyIoC.Tests.csproj Mon Jan 17 07:02:31 2011 +0000
@@ -63,6 +63,7 @@
+
diff -r aafb438ec863d4bfbd4745dc7041a1ea5033895f -r 9569cf22edf5be9380102435107ed7c6694c451f src/TinyIoC.Tests/TinyIoCTests.cs
--- a/src/TinyIoC.Tests/TinyIoCTests.cs Sat Jan 15 13:58:23 2011 +0000
+++ b/src/TinyIoC.Tests/TinyIoCTests.cs Mon Jan 17 07:02:31 2011 +0000
@@ -1718,7 +1718,7 @@
container.Register();
var input = new TestClassPropertyDependencies();
- container.BuildUp(input, new TinyIoC.ResolveOptions());
+ container.BuildUp(input, new ResolveOptions());
Assert.IsNotNull(input.Property1);
Assert.IsNotNull(input.Property2);
@@ -1733,7 +1733,7 @@
container.Register();
var input = new TestClassPropertyDependencies();
- container.BuildUp(input, new TinyIoC.ResolveOptions() { UnregisteredResolutionAction = UnregisteredResolutionActions.Fail });
+ container.BuildUp(input, new ResolveOptions() { UnregisteredResolutionAction = UnregisteredResolutionActions.Fail });
Assert.IsNotNull(input.Property1);
Assert.IsNotNull(input.Property2);
@@ -2046,7 +2046,7 @@
container.Register();
ITestInterface output;
- var result = container.TryResolve(new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(new ResolveOptions(), out output);
Assert.IsTrue(result);
}
@@ -2058,7 +2058,7 @@
container.Register();
ITestInterface output;
- var result = container.TryResolve(new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(new ResolveOptions(), out output);
Assert.IsInstanceOfType(output, typeof(ITestInterface));
}
@@ -2069,7 +2069,7 @@
var container = UtilityMethods.GetContainer();
ITestInterface output;
- var result = container.TryResolve(new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(new ResolveOptions(), out output);
Assert.IsFalse(result);
}
@@ -2116,7 +2116,7 @@
container.Register("Testing");
ITestInterface output;
- var result = container.TryResolve("Testing", new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve("Testing", new ResolveOptions(), out output);
Assert.IsTrue(result);
}
@@ -2128,7 +2128,7 @@
container.Register("Testing");
ITestInterface output;
- container.TryResolve("Testing", new TinyIoC.ResolveOptions(), out output);
+ container.TryResolve("Testing", new ResolveOptions(), out output);
Assert.IsInstanceOfType(output, typeof(ITestInterface));
}
@@ -2139,7 +2139,7 @@
var container = UtilityMethods.GetContainer();
ITestInterface output;
- var result = container.TryResolve("Testing", new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve("Testing", new ResolveOptions(), out output);
Assert.IsFalse(result);
}
@@ -2221,7 +2221,7 @@
container.Register();
TestClassWithParameters output;
- var result = container.TryResolve(new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsTrue(result);
}
@@ -2233,7 +2233,7 @@
container.Register();
TestClassWithParameters output;
- var result = container.TryResolve(new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsInstanceOfType(output, typeof(TestClassWithParameters));
}
@@ -2244,7 +2244,7 @@
var container = UtilityMethods.GetContainer();
TestClassWithParameters output;
- var result = container.TryResolve(new NamedParameterOverloads() { { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(new NamedParameterOverloads() { { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsFalse(result);
}
@@ -2256,7 +2256,7 @@
container.Register("Testing");
TestClassWithParameters output;
- var result = container.TryResolve("Testing", new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve("Testing", new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsTrue(result);
}
@@ -2268,7 +2268,7 @@
container.Register("Testing");
TestClassWithParameters output;
- var result = container.TryResolve("Testing", new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve("Testing", new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsInstanceOfType(output, typeof(TestClassWithParameters));
}
@@ -2279,7 +2279,7 @@
var container = UtilityMethods.GetContainer();
TestClassWithParameters output;
- var result = container.TryResolve("Testing", new NamedParameterOverloads() { { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve("Testing", new NamedParameterOverloads() { { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsFalse(result);
}
@@ -2400,7 +2400,7 @@
container.Register();
object output;
- var result = container.TryResolve(typeof(ITestInterface), new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(ITestInterface), new ResolveOptions(), out output);
Assert.IsTrue(result);
}
@@ -2412,7 +2412,7 @@
container.Register();
object output;
- var result = container.TryResolve(typeof(ITestInterface), new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(ITestInterface), new ResolveOptions(), out output);
Assert.IsInstanceOfType(output, typeof(ITestInterface));
}
@@ -2423,7 +2423,7 @@
var container = UtilityMethods.GetContainer();
object output;
- var result = container.TryResolve(typeof(ITestInterface), new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(ITestInterface), new ResolveOptions(), out output);
Assert.IsFalse(result);
}
@@ -2470,7 +2470,7 @@
container.Register("Testing");
object output;
- var result = container.TryResolve(typeof(ITestInterface), "Testing", new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(ITestInterface), "Testing", new ResolveOptions(), out output);
Assert.IsTrue(result);
}
@@ -2482,7 +2482,7 @@
container.Register("Testing");
object output;
- container.TryResolve(typeof(ITestInterface), "Testing", new TinyIoC.ResolveOptions(), out output);
+ container.TryResolve(typeof(ITestInterface), "Testing", new ResolveOptions(), out output);
Assert.IsInstanceOfType(output, typeof(ITestInterface));
}
@@ -2493,7 +2493,7 @@
var container = UtilityMethods.GetContainer();
object output;
- var result = container.TryResolve(typeof(ITestInterface), "Testing", new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(ITestInterface), "Testing", new ResolveOptions(), out output);
Assert.IsFalse(result);
}
@@ -2575,7 +2575,7 @@
container.Register();
object output;
- var result = container.TryResolve(typeof(TestClassWithParameters), new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(TestClassWithParameters), new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsTrue(result);
}
@@ -2587,7 +2587,7 @@
container.Register();
object output;
- var result = container.TryResolve(typeof(TestClassWithParameters), new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(TestClassWithParameters), new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsInstanceOfType(output, typeof(TestClassWithParameters));
}
@@ -2598,7 +2598,7 @@
var container = UtilityMethods.GetContainer();
object output;
- var result = container.TryResolve(typeof(TestClassWithParameters), new NamedParameterOverloads() { { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(TestClassWithParameters), new NamedParameterOverloads() { { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsFalse(result);
}
@@ -2610,7 +2610,7 @@
container.Register("Testing");
object output;
- var result = container.TryResolve(typeof(TestClassWithParameters), "Testing", new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(TestClassWithParameters), "Testing", new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsTrue(result);
}
@@ -2622,7 +2622,7 @@
container.Register("Testing");
object output;
- var result = container.TryResolve(typeof(TestClassWithParameters), "Testing", new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(TestClassWithParameters), "Testing", new NamedParameterOverloads() { { "stringProperty", "test" }, { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsInstanceOfType(output, typeof(TestClassWithParameters));
}
@@ -2633,7 +2633,7 @@
var container = UtilityMethods.GetContainer();
object output;
- var result = container.TryResolve(typeof(TestClassWithParameters), "Testing", new NamedParameterOverloads() { { "intProperty", 2 } }, new TinyIoC.ResolveOptions(), out output);
+ var result = container.TryResolve(typeof(TestClassWithParameters), "Testing", new NamedParameterOverloads() { { "intProperty", 2 } }, new ResolveOptions(), out output);
Assert.IsFalse(result);
}
@@ -2793,7 +2793,7 @@
var result = container.RegisterMultiple(new Type[] { typeof(TestClassDefaultCtor), typeof(DisposableTestClassWithInterface) });
- Assert.IsInstanceOfType(result, typeof(TinyIoC.TinyIoCContainer.MultiRegisterOptions));
+ Assert.IsInstanceOfType(result, typeof(TinyIoCContainer.MultiRegisterOptions));
}
[TestMethod]
@@ -3063,5 +3063,132 @@
Assert.IsTrue(object.ReferenceEquals(item2.Dependency, childInstance), "item2 has wrong dependency");
}
+ [TestMethod]
+ public void ToCustomLifetimeProvider_NullInstance_Throws()
+ {
+ var container = UtilityMethods.GetContainer();
+
+ try
+ {
+ TinyIoCContainer.RegisterOptions.ToCustomLifetimeManager(null, null, "");
+
+ Assert.Fail("Exception not thrown");
+ }
+ catch (ArgumentNullException)
+ {
+
+ }
+ }
+
+ [TestMethod]
+ public void ToCustomLifetimeProvider_NullProvider_Throws()
+ {
+ var container = UtilityMethods.GetContainer();
+ var registration = container.Register();
+
+ try
+ {
+ TinyIoCContainer.RegisterOptions.ToCustomLifetimeManager(registration, null, "");
+
+ Assert.Fail("Exception not thrown");
+ }
+ catch (ArgumentNullException)
+ {
+
+ }
+ }
+
+ [TestMethod]
+ public void ToCustomLifetimeProvider_NullErrorString_Throws()
+ {
+ var container = UtilityMethods.GetContainer();
+ var registration = container.Register();
+
+ try
+ {
+ TinyIoCContainer.RegisterOptions.ToCustomLifetimeManager(registration, new Fakes.FakeLifetimeProvider(), null);
+
+ Assert.Fail("Exception not thrown");
+ }
+ catch (ArgumentException)
+ {
+
+ }
+ }
+
+ [TestMethod]
+ public void ToCustomLifetimeProvider_EmptyErrorString_Throws()
+ {
+ var container = UtilityMethods.GetContainer();
+ var registration = container.Register();
+
+ try
+ {
+ TinyIoCContainer.RegisterOptions.ToCustomLifetimeManager(registration, new Fakes.FakeLifetimeProvider(), "");
+
+ Assert.Fail("Exception not thrown");
+ }
+ catch (ArgumentException)
+ {
+
+ }
+ }
+
+ [TestMethod]
+ public void CustomLifetimeProvider_WhenResolved_CallsGetObjectOnLifetimeProvider()
+ {
+ var container = UtilityMethods.GetContainer();
+ var providerMock = new Mock();
+ providerMock.Setup(p => p.GetObject()).Returns(new TestClassDefaultCtor());
+ var registration = container.Register();
+ TinyIoCContainer.RegisterOptions.ToCustomLifetimeManager(registration, providerMock.Object, "Mock");
+
+ container.Resolve();
+
+ providerMock.Verify(p => p.GetObject(), Times.Once(), "not called");
+ }
+
+ [TestMethod]
+ public void CustomLifetimeProvider_GetObjectReturnsNull_CallsSetObjectOnProvider()
+ {
+ var container = UtilityMethods.GetContainer();
+ var providerMock = new Mock();
+ providerMock.Setup(p => p.GetObject()).Returns(null);
+ providerMock.Setup(p => p.SetObject(It.IsAny