Skip to content

Commit

Permalink
Code cleanup - organized methods.
Browse files Browse the repository at this point in the history
  • Loading branch information
tillig committed Oct 24, 2018
1 parent 80f4925 commit 3e34d5c
Showing 1 changed file with 80 additions and 81 deletions.
161 changes: 80 additions & 81 deletions test/Autofac.Test/Core/Resolving/ResolveOperationTests.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System;
using System.Linq;
using Autofac.Builder;
using Autofac.Core;
using Autofac.Test.Scenarios.Dependencies;
using Xunit;
Expand All @@ -10,54 +9,69 @@ namespace Autofac.Test.Core.Resolving
public class ResolveOperationTests
{
[Fact]
public void PropertyInjectionPassesNamedParameterOfTheInstanceTypeBeingInjectedOnto()
public void ActivatedArgsSuppliesParameters()
{
var capturedparameters = Enumerable.Empty<Parameter>();

var cb = new ContainerBuilder();
cb.RegisterType<DependsByProp>().SingleInstance().PropertiesAutowired();
cb.Register((context, parameters) =>
{
capturedparameters = parameters.ToArray();
return new DependsByCtor(null);
});
const int provided = 12;
var passed = 0;

var c = cb.Build();
var existingInstance = new DependsByProp();
c.InjectUnsetProperties(existingInstance);
var builder = new ContainerBuilder();
builder.RegisterType<object>()
.OnActivated(e => passed = e.Parameters.TypedAs<int>());
var container = builder.Build();

var instanceType = capturedparameters.Named<Type>(ResolutionExtensions.PropertyInjectedInstanceTypeNamedParameter);
Assert.Equal(existingInstance.GetType(), instanceType);
container.Resolve<object>(TypedParameter.From(provided));
Assert.Equal(provided, passed);
}

[Fact]
public void CtorPropDependencyOkOrder1()
public void ActivatingArgsSuppliesParameters()
{
var cb = new ContainerBuilder();
cb.RegisterType<DependsByCtor>().SingleInstance();
cb.RegisterType<DependsByProp>().SingleInstance().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
const int provided = 12;
var passed = 0;

var c = cb.Build();
var dbp = c.Resolve<DependsByProp>();
var builder = new ContainerBuilder();
builder.RegisterType<object>()
.OnActivating(e => passed = e.Parameters.TypedAs<int>());
var container = builder.Build();

Assert.NotNull(dbp.Dep);
Assert.NotNull(dbp.Dep.Dep);
Assert.Same(dbp, dbp.Dep.Dep);
container.Resolve<object>(TypedParameter.From(provided));
Assert.Equal(provided, passed);
}

[Fact]
public void CtorPropDependencyOkOrder2()
public void AfterTheOperationIsFinished_ReusingTheTemporaryContextThrows()
{
var cb = new ContainerBuilder();
cb.RegisterType<DependsByCtor>().SingleInstance();
cb.RegisterType<DependsByProp>().SingleInstance().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
IComponentContext ctx = null;
var builder = new ContainerBuilder();
builder.Register(c =>
{
ctx = c;
return new object();
});
builder.RegisterInstance("Hello");
var container = builder.Build();
container.Resolve<string>();
container.Resolve<object>();
Assert.Throws<ObjectDisposedException>(() => ctx.Resolve<string>());
}

var c = cb.Build();
var dbc = c.Resolve<DependsByCtor>();
[Fact]
public void ChainedOnActivatedEventsAreInvokedWithinASingleResolveOperation()
{
var builder = new ContainerBuilder();

Assert.NotNull(dbc.Dep);
Assert.NotNull(dbc.Dep.Dep);
Assert.Same(dbc, dbc.Dep.Dep);
var secondEventRaised = false;
builder.RegisterType<object>()
.Named<object>("second")
.OnActivated(e => secondEventRaised = true);

builder.RegisterType<object>()
.OnActivated(e => e.Context.ResolveNamed<object>("second"));

var container = builder.Build();
container.Resolve<object>();

Assert.True(secondEventRaised);
}

[Fact]
Expand Down Expand Up @@ -87,69 +101,54 @@ public void CtorPropDependencyFactoriesOrder2()
}

[Fact]
public void ActivatingArgsSuppliesParameters()
public void CtorPropDependencyOkOrder1()
{
const int provided = 12;
var passed = 0;
var cb = new ContainerBuilder();
cb.RegisterType<DependsByCtor>().SingleInstance();
cb.RegisterType<DependsByProp>().SingleInstance().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);

var builder = new ContainerBuilder();
builder.RegisterType<object>()
.OnActivating(e => passed = e.Parameters.TypedAs<int>());
var container = builder.Build();
var c = cb.Build();
var dbp = c.Resolve<DependsByProp>();

container.Resolve<object>(TypedParameter.From(provided));
Assert.Equal(provided, passed);
Assert.NotNull(dbp.Dep);
Assert.NotNull(dbp.Dep.Dep);
Assert.Same(dbp, dbp.Dep.Dep);
}

[Fact]
public void ActivatedArgsSuppliesParameters()
public void CtorPropDependencyOkOrder2()
{
const int provided = 12;
var passed = 0;
var cb = new ContainerBuilder();
cb.RegisterType<DependsByCtor>().SingleInstance();
cb.RegisterType<DependsByProp>().SingleInstance().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);

var builder = new ContainerBuilder();
builder.RegisterType<object>()
.OnActivated(e => passed = e.Parameters.TypedAs<int>());
var container = builder.Build();
var c = cb.Build();
var dbc = c.Resolve<DependsByCtor>();

container.Resolve<object>(TypedParameter.From(provided));
Assert.Equal(provided, passed);
Assert.NotNull(dbc.Dep);
Assert.NotNull(dbc.Dep.Dep);
Assert.Same(dbc, dbc.Dep.Dep);
}

[Fact]
public void ChainedOnActivatedEventsAreInvokedWithinASingleResolveOperation()
public void PropertyInjectionPassesNamedParameterOfTheInstanceTypeBeingInjectedOnto()
{
var builder = new ContainerBuilder();

bool secondEventRaised = false;
builder.RegisterType<object>()
.Named<object>("second")
.OnActivated(e => secondEventRaised = true);

builder.RegisterType<object>()
.OnActivated(e => e.Context.ResolveNamed<object>("second"));

var container = builder.Build();
container.Resolve<object>();

Assert.True(secondEventRaised);
}
var capturedparameters = Enumerable.Empty<Parameter>();

[Fact]
public void AfterTheOperationIsFinished_ReusingTheTemporaryContextThrows()
{
IComponentContext ctx = null;
var builder = new ContainerBuilder();
builder.Register(c =>
var cb = new ContainerBuilder();
cb.RegisterType<DependsByProp>().SingleInstance().PropertiesAutowired();
cb.Register((context, parameters) =>
{
ctx = c;
return new object();
capturedparameters = parameters.ToArray();
return new DependsByCtor(null);
});
builder.RegisterInstance("Hello");
var container = builder.Build();
container.Resolve<string>();
container.Resolve<object>();
Assert.Throws<ObjectDisposedException>(() => ctx.Resolve<string>());

var c = cb.Build();
var existingInstance = new DependsByProp();
c.InjectUnsetProperties(existingInstance);

var instanceType = capturedparameters.Named<Type>(ResolutionExtensions.PropertyInjectedInstanceTypeNamedParameter);
Assert.Equal(existingInstance.GetType(), instanceType);
}
}
}

0 comments on commit 3e34d5c

Please sign in to comment.