[ninject commit] r147 - in experiments/ninject2/src: Ninject Ninject.Tests Ninject.Tests/Fakes Ninject.Tests/Integ...

2 views
Skip to first unread message

codesite...@google.com

unread,
Feb 18, 2009, 9:10:15 PM2/18/09
to ninje...@googlegroups.com
Author: nkohari
Date: Wed Feb 18 18:08:24 2009
New Revision: 147

Added:
experiments/ninject2/src/Ninject.Tests/Fakes/NotifiesWhenDisposed.cs

experiments/ninject2/src/Ninject.Tests/Integration/ExternalInjectionTests.cs
- copied, changed from r146,
/experiments/ninject2/src/Ninject.Tests/Integration/SpecialResolutionTests.cs
Modified:

experiments/ninject2/src/Ninject.Tests/Integration/ActivationScopeTests.cs
experiments/ninject2/src/Ninject.Tests/Integration/SingletonScopeTests.cs
experiments/ninject2/src/Ninject.Tests/Integration/ThreadScopeTests.cs
experiments/ninject2/src/Ninject.Tests/Ninject.Tests.csproj
experiments/ninject2/src/Ninject.Tests/Unit/DisposableStrategyTests.cs

experiments/ninject2/src/Ninject/Infrastructure/Introspection/FormatExtensions.cs

experiments/ninject2/src/Ninject/Infrastructure/Language/ExtensionsForIEnumerable.cs
experiments/ninject2/src/Ninject/KernelBase.cs

Log:


Added: experiments/ninject2/src/Ninject.Tests/Fakes/NotifiesWhenDisposed.cs
==============================================================================
--- (empty file)
+++ experiments/ninject2/src/Ninject.Tests/Fakes/NotifiesWhenDisposed.cs
Wed Feb 18 18:08:24 2009
@@ -0,0 +1,7 @@
+using System;
+using Ninject.Infrastructure.Disposal;
+
+namespace Ninject.Tests.Fakes
+{
+ public class NotifiesWhenDisposed : DisposableObject { }
+}
\ No newline at end of file

Modified:
experiments/ninject2/src/Ninject.Tests/Integration/ActivationScopeTests.cs
==============================================================================
---
experiments/ninject2/src/Ninject.Tests/Integration/ActivationScopeTests.cs
(original)
+++
experiments/ninject2/src/Ninject.Tests/Integration/ActivationScopeTests.cs
Wed Feb 18 18:08:24 2009
@@ -47,14 +47,10 @@
{
kernel.Bind<NotifiesWhenDisposed>().ToSelf();

- bool instanceWasDisposed = false;
-
var instance = scope.Get<NotifiesWhenDisposed>();
- instance.Disposed += (o, e) => instanceWasDisposed = true;
-
GC.Collect();

- instanceWasDisposed.ShouldBeFalse();
+ instance.IsDisposed.ShouldBeFalse();
}
}

@@ -65,16 +61,10 @@
{
kernel.Bind<NotifiesWhenDisposed>().ToSelf();

- bool instanceWasDisposed = false;
-
var instance = scope.Get<NotifiesWhenDisposed>();
- instance.Disposed += (o, e) => instanceWasDisposed = true;
-
scope.Dispose();

- instanceWasDisposed.ShouldBeTrue();
+ instance.IsDisposed.ShouldBeTrue();
}
}
-
- public class NotifiesWhenDisposed : DisposableObject { }
}

Copied:
experiments/ninject2/src/Ninject.Tests/Integration/ExternalInjectionTests.cs
(from r146,
/experiments/ninject2/src/Ninject.Tests/Integration/SpecialResolutionTests.cs)
==============================================================================
---
/experiments/ninject2/src/Ninject.Tests/Integration/SpecialResolutionTests.cs
(original)
+++
experiments/ninject2/src/Ninject.Tests/Integration/ExternalInjectionTests.cs
Wed Feb 18 18:08:24 2009
@@ -1,39 +1,47 @@
using System;
+using Ninject.Tests.Fakes;
using Xunit;

-namespace Ninject.Tests.Integration.SpecialResolutionTests
+namespace Ninject.Tests.Integration.ExternalInjectionTests
{
- public class SpecialResolutionContext
+ public class ExternalInjectionContext
{
protected readonly StandardKernel kernel;

- public SpecialResolutionContext()
+ public ExternalInjectionContext()
{
kernel = new StandardKernel();
}
}

- public class WhenServiceRequestsKernel : SpecialResolutionContext
+ public class WhenInjectIsCalled : ExternalInjectionContext
{
[Fact]
public void InstanceOfKernelIsInjected()
{
- kernel.Bind<RequestsKernel>().ToSelf();
- var instance = kernel.Get<RequestsKernel>();
+ kernel.Bind<IWeapon>().To<Sword>();

- instance.ShouldNotBeNull();
- instance.Kernel.ShouldNotBeNull();
- instance.Kernel.ShouldBeSameAs(kernel);
- }
- }
+ var warrior = new ExternalWarrior();
+ kernel.Inject(warrior);

- public class RequestsKernel
- {
- public IKernel Kernel { get; set; }
+ warrior.Weapon.ShouldNotBeNull();
+ warrior.Weapon.ShouldBeInstanceOf<Sword>();
+ }

- public RequestsKernel(IKernel kernel)
+ [Fact]
+ public void InstanceIsNotTrackedForDeactivation()
{
- Kernel = kernel;
+ var instance = new NotifiesWhenDisposed();
+
+ kernel.Inject(instance);
+ kernel.Dispose();
+
+ instance.IsDisposed.ShouldBeFalse();
}
+ }
+
+ public class ExternalWarrior
+ {
+ [Inject] public IWeapon Weapon { get; set; }
}
}

Modified:
experiments/ninject2/src/Ninject.Tests/Integration/SingletonScopeTests.cs
==============================================================================
---
experiments/ninject2/src/Ninject.Tests/Integration/SingletonScopeTests.cs
(original)
+++
experiments/ninject2/src/Ninject.Tests/Integration/SingletonScopeTests.cs
Wed Feb 18 18:08:24 2009
@@ -48,14 +48,10 @@
{

kernel.Bind<INotifyWhenDisposed>().To<NotifiesWhenDisposed>().InSingletonScope();

- bool instanceWasDisposed = false;
-
var instance = kernel.Get<INotifyWhenDisposed>();
- instance.Disposed += (o, e) => instanceWasDisposed = true;
-
kernel.Dispose();

- instanceWasDisposed.ShouldBeTrue();
+ instance.IsDisposed.ShouldBeTrue();
}
}

@@ -91,14 +87,10 @@
{
kernel.Bind<NotifiesWhenDisposed>().ToSelf().InSingletonScope();

- bool instanceWasDisposed = false;
-
var instance = kernel.Get<NotifiesWhenDisposed>();
- instance.Disposed += (o, e) => instanceWasDisposed = true;
-
kernel.Dispose();

- instanceWasDisposed.ShouldBeTrue();
+ instance.IsDisposed.ShouldBeTrue();
}
}

@@ -134,14 +126,10 @@
{

kernel.Bind<INotifyWhenDisposed>().ToProvider<NotifiesWhenDisposedProvider>().InSingletonScope();

- bool instanceWasDisposed = false;
-
var instance = kernel.Get<INotifyWhenDisposed>();
- instance.Disposed += (o, e) => instanceWasDisposed = true;
-
kernel.Dispose();

- instanceWasDisposed.ShouldBeTrue();
+ instance.IsDisposed.ShouldBeTrue();
}
}

@@ -177,18 +165,12 @@
{
kernel.Bind<INotifyWhenDisposed>().ToMethod(x => new
NotifiesWhenDisposed()).InSingletonScope();

- bool instanceWasDisposed = false;
-
var instance = kernel.Get<INotifyWhenDisposed>();
- instance.Disposed += (o, e) => instanceWasDisposed = true;
-
kernel.Dispose();

- instanceWasDisposed.ShouldBeTrue();
+ instance.IsDisposed.ShouldBeTrue();
}
}
-
- public class NotifiesWhenDisposed : DisposableObject { }

public class NotifiesWhenDisposedProvider : Provider<NotifiesWhenDisposed>
{

Modified:
experiments/ninject2/src/Ninject.Tests/Integration/ThreadScopeTests.cs
==============================================================================
--- experiments/ninject2/src/Ninject.Tests/Integration/ThreadScopeTests.cs
(original)
+++ experiments/ninject2/src/Ninject.Tests/Integration/ThreadScopeTests.cs
Wed Feb 18 18:08:24 2009
@@ -91,6 +91,4 @@
instance.IsDisposed.ShouldBeTrue();
}
}
-
- public class NotifiesWhenDisposed : DisposableObject { }
}

Modified: experiments/ninject2/src/Ninject.Tests/Ninject.Tests.csproj
==============================================================================
--- experiments/ninject2/src/Ninject.Tests/Ninject.Tests.csproj (original)
+++ experiments/ninject2/src/Ninject.Tests/Ninject.Tests.csproj Wed Feb 18
18:08:24 2009
@@ -53,6 +53,8 @@
</Reference>
</ItemGroup>
<ItemGroup>
+ <Compile Include="Integration\ExternalInjectionTests.cs" />
+ <Compile Include="Fakes\NotifiesWhenDisposed.cs" />
<Compile Include="SpecExtensions.cs" />
<Compile Include="ExtensionsForWeakReference.cs" />
<Compile Include="ExtensionsForIEnumerable.cs" />

Modified:
experiments/ninject2/src/Ninject.Tests/Unit/DisposableStrategyTests.cs
==============================================================================
--- experiments/ninject2/src/Ninject.Tests/Unit/DisposableStrategyTests.cs
(original)
+++ experiments/ninject2/src/Ninject.Tests/Unit/DisposableStrategyTests.cs
Wed Feb 18 18:08:24 2009
@@ -3,6 +3,7 @@
using Ninject.Activation;
using Ninject.Activation.Strategies;
using Ninject.Infrastructure.Disposal;
+using Ninject.Tests.Fakes;
using Xunit;

namespace Ninject.Tests.Unit.DisposableStrategyTests
@@ -41,6 +42,4 @@
strategy.Deactivate(contextMock.Object);
}
}
-
- public class NotifiesWhenDisposed : DisposableObject { }
}

Modified:
experiments/ninject2/src/Ninject/Infrastructure/Introspection/FormatExtensions.cs
==============================================================================
---
experiments/ninject2/src/Ninject/Infrastructure/Introspection/FormatExtensions.cs
(original)
+++
experiments/ninject2/src/Ninject/Infrastructure/Introspection/FormatExtensions.cs
Wed Feb 18 18:08:24 2009
@@ -22,6 +22,7 @@
using System.Text;
using Ninject.Activation;
using Ninject.Activation.Providers;
+using Ninject.Infrastructure.Language;
using Ninject.Planning.Bindings;
using Ninject.Planning.Targets;
#endregion
@@ -32,21 +33,18 @@
{
public static string FormatActivationPath(this IRequest request)
{
- var stack = new Stack<IRequest>();
- IRequest current = request;
-
- while (current != null)
+ using (var sw = new StringWriter())
{
- stack.Push(current);
- current = current.Parent;
- }
+ IRequest current = request;

- var sb = new StringBuilder();
+ while (current != null)
+ {
+ sw.WriteLine("{0,3}) {1}", current.Depth + 1, current.Format());
+ current = current.Parent;
+ }

- foreach (var req in stack)
- sb.AppendFormat("{0,3}) {1}{2}", req.Depth + 1, req.Format(),
Environment.NewLine);
-
- return sb.ToString();
+ return sw.ToString();
+ }
}

public static string Format(this IBinding binding, IContext context)

Modified:
experiments/ninject2/src/Ninject/Infrastructure/Language/ExtensionsForIEnumerable.cs
==============================================================================
---
experiments/ninject2/src/Ninject/Infrastructure/Language/ExtensionsForIEnumerable.cs
(original)
+++
experiments/ninject2/src/Ninject/Infrastructure/Language/ExtensionsForIEnumerable.cs
Wed Feb 18 18:08:24 2009
@@ -17,6 +17,7 @@
#region Using Directives
using System;
using System.Collections.Generic;
+using System.Linq;
#endregion

namespace Ninject.Infrastructure.Language

Modified: experiments/ninject2/src/Ninject/KernelBase.cs
==============================================================================
--- experiments/ninject2/src/Ninject/KernelBase.cs (original)
+++ experiments/ninject2/src/Ninject/KernelBase.cs Wed Feb 18 18:08:24 2009
@@ -205,7 +205,19 @@
/// <param name="parameters">The parameters to pass to the
request.</param>
public void Inject(object instance, params IParameter[] parameters)
{
- throw new NotImplementedException();
+ Type service = instance.GetType();
+
+ var planner = Components.Get<IPlanner>();
+ var pipeline = Components.Get<IPipeline>();
+
+ var binding = new Binding(service) { ScopeCallback = null };
+ var request = CreateDirectRequest(service, null, parameters, false);
+ var context = CreateContext(request, binding);
+
+ context.Plan = planner.GetPlan(service);
+ context.Instance = instance;
+
+ pipeline.Activate(context);
}

/// <summary>
Reply all
Reply to author
Forward
0 new messages