Skip to content

Commit c53485e

Browse files
committed
Add 'test/Autofac.Extras.Tests.MvvmCross/' from commit '4f02f9734b39c326e05e63f0a36a7145cf72e121'
git-subtree-dir: test/Autofac.Extras.Tests.MvvmCross git-subtree-mainline: 155f0ed git-subtree-split: 4f02f97
2 parents 155f0ed + 4f02f97 commit c53485e

File tree

4 files changed

+362
-0
lines changed

4 files changed

+362
-0
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<PropertyGroup>
4+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
5+
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
6+
<ProductVersion>9.0.30729</ProductVersion>
7+
<SchemaVersion>2.0</SchemaVersion>
8+
<ProjectGuid>{BFC1B673-4FB5-4240-8495-095802188DFD}</ProjectGuid>
9+
<OutputType>Library</OutputType>
10+
<AppDesignerFolder>Properties</AppDesignerFolder>
11+
<RootNamespace>Autofac.Extras.Tests.MvvmCross</RootNamespace>
12+
<AssemblyName>Autofac.Extras.Tests.MvvmCross</AssemblyName>
13+
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
14+
<FileAlignment>512</FileAlignment>
15+
<SignAssembly>true</SignAssembly>
16+
<AssemblyOriginatorKeyFile>..\..\..\Build\SharedKey.snk</AssemblyOriginatorKeyFile>
17+
<FileUpgradeFlags>
18+
</FileUpgradeFlags>
19+
<OldToolsVersion>3.5</OldToolsVersion>
20+
<UpgradeBackupLocation />
21+
<PublishUrl>publish\</PublishUrl>
22+
<Install>true</Install>
23+
<InstallFrom>Disk</InstallFrom>
24+
<UpdateEnabled>false</UpdateEnabled>
25+
<UpdateMode>Foreground</UpdateMode>
26+
<UpdateInterval>7</UpdateInterval>
27+
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
28+
<UpdatePeriodically>false</UpdatePeriodically>
29+
<UpdateRequired>false</UpdateRequired>
30+
<MapFileExtensions>true</MapFileExtensions>
31+
<ApplicationRevision>0</ApplicationRevision>
32+
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
33+
<IsWebBootstrapper>false</IsWebBootstrapper>
34+
<UseApplicationTrust>false</UseApplicationTrust>
35+
<BootstrapperEnabled>true</BootstrapperEnabled>
36+
<TargetFrameworkProfile />
37+
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\..\</SolutionDir>
38+
<RestorePackages>true</RestorePackages>
39+
</PropertyGroup>
40+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
41+
<DebugSymbols>true</DebugSymbols>
42+
<DebugType>full</DebugType>
43+
<Optimize>false</Optimize>
44+
<OutputPath>bin\Debug\</OutputPath>
45+
<DefineConstants>DEBUG;TRACE</DefineConstants>
46+
<ErrorReport>prompt</ErrorReport>
47+
<WarningLevel>4</WarningLevel>
48+
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
49+
<Prefer32Bit>false</Prefer32Bit>
50+
</PropertyGroup>
51+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
52+
<DebugType>pdbonly</DebugType>
53+
<Optimize>true</Optimize>
54+
<OutputPath>bin\Release\</OutputPath>
55+
<DefineConstants>TRACE</DefineConstants>
56+
<ErrorReport>prompt</ErrorReport>
57+
<WarningLevel>4</WarningLevel>
58+
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
59+
<Prefer32Bit>false</Prefer32Bit>
60+
</PropertyGroup>
61+
<ItemGroup>
62+
<Reference Include="Autofac, Version=3.5.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
63+
<SpecificVersion>False</SpecificVersion>
64+
<HintPath>..\..\..\packages\Autofac.3.5.0\lib\net40\Autofac.dll</HintPath>
65+
</Reference>
66+
<Reference Include="Cirrious.CrossCore">
67+
<HintPath>..\..\..\packages\MvvmCross.HotTuna.CrossCore.3.2.1\lib\net45\Cirrious.CrossCore.dll</HintPath>
68+
</Reference>
69+
<Reference Include="Cirrious.CrossCore.Wpf">
70+
<HintPath>..\..\..\packages\MvvmCross.HotTuna.CrossCore.3.2.1\lib\net45\Cirrious.CrossCore.Wpf.dll</HintPath>
71+
</Reference>
72+
<Reference Include="Cirrious.MvvmCross.Localization">
73+
<HintPath>..\..\..\packages\MvvmCross.HotTuna.CrossCore.3.2.1\lib\net45\Cirrious.MvvmCross.Localization.dll</HintPath>
74+
</Reference>
75+
<Reference Include="nunit.framework">
76+
<HintPath>..\..\..\packages\NUnit.2.6.3\lib\nunit.framework.dll</HintPath>
77+
</Reference>
78+
<Reference Include="System" />
79+
<Reference Include="System.Core" />
80+
<Reference Include="System.Data" />
81+
<Reference Include="System.Web" />
82+
<Reference Include="System.Web.Abstractions" />
83+
<Reference Include="System.Web.Routing" />
84+
<Reference Include="System.Xml" />
85+
</ItemGroup>
86+
<ItemGroup>
87+
<Compile Include="..\..\..\GlobalAssemblyInfo.cs">
88+
<Link>Properties\GlobalAssemblyInfo.cs</Link>
89+
</Compile>
90+
<Compile Include="..\..\Source\Autofac.Extras.MvvmCross\Properties\VersionAssemblyInfo.cs">
91+
<Link>Properties\VersionAssemblyInfo.cs</Link>
92+
</Compile>
93+
<Compile Include="Properties\AssemblyInfo.cs" />
94+
<Compile Include="AutofacMvxIocProviderFixture.cs" />
95+
</ItemGroup>
96+
<ItemGroup>
97+
<ProjectReference Include="..\..\Source\Autofac.Extras.MvvmCross\Autofac.Extras.MvvmCross.csproj">
98+
<Project>{1C6A45CE-216B-4F3B-8EBC-CB8782B76E7E}</Project>
99+
<Name>Autofac.Extras.MvvmCross</Name>
100+
</ProjectReference>
101+
</ItemGroup>
102+
<ItemGroup>
103+
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
104+
<Visible>False</Visible>
105+
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
106+
<Install>false</Install>
107+
</BootstrapperPackage>
108+
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
109+
<Visible>False</Visible>
110+
<ProductName>.NET Framework 3.5 SP1</ProductName>
111+
<Install>true</Install>
112+
</BootstrapperPackage>
113+
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
114+
<Visible>False</Visible>
115+
<ProductName>Windows Installer 3.1</ProductName>
116+
<Install>true</Install>
117+
</BootstrapperPackage>
118+
</ItemGroup>
119+
<ItemGroup>
120+
<None Include="packages.config" />
121+
</ItemGroup>
122+
<ItemGroup>
123+
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
124+
</ItemGroup>
125+
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
126+
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
127+
Other similar extension points exist, see Microsoft.Common.targets.
128+
<Target Name="BeforeBuild">
129+
</Target>
130+
<Target Name="AfterBuild">
131+
</Target>
132+
-->
133+
</Project>
Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
using System;
2+
using Autofac.Extras.MvvmCross;
3+
using Autofac.Core.Registration;
4+
using Autofac.Core;
5+
using NUnit.Framework;
6+
7+
namespace Autofac.Extras.Tests.MvvmCross
8+
{
9+
[TestFixture]
10+
public class AutofacMvxIocProviderFixture
11+
{
12+
IContainer _container;
13+
AutofacMvxIocProvider _provider;
14+
15+
[SetUp]
16+
public void SetUp()
17+
{
18+
_container = new ContainerBuilder().Build();
19+
_provider = new AutofacMvxIocProvider(_container);
20+
}
21+
22+
[TearDown]
23+
public void TearDown()
24+
{
25+
_provider.Dispose();
26+
}
27+
28+
[Test]
29+
public void CanResolveReturnsTrueWhenMatchingTypeIsRegistered()
30+
{
31+
var builder = new ContainerBuilder();
32+
builder.Register(c => new object());
33+
builder.Update(_container);
34+
35+
Assert.That(_provider.CanResolve<object>(), Is.True);
36+
}
37+
38+
[Test]
39+
public void CanResolveReturnsFalseWhenNoMatchingTypeIsRegistered()
40+
{
41+
Assert.That(_provider.CanResolve<object>(), Is.False);
42+
}
43+
44+
[Test]
45+
public void CanResolveThrowsArgumentNullExceptionWhenCalledWithNoTypeArgument()
46+
{
47+
Assert.That(() => _provider.CanResolve(null), Throws.TypeOf<ArgumentNullException>());
48+
}
49+
50+
[Test]
51+
public void ResolveCreateAndIoCConstructReturnsRegisteredType()
52+
{
53+
var builder = new ContainerBuilder();
54+
builder.Register(c => new object());
55+
builder.Update(_container);
56+
57+
Assert.That(_provider.Resolve<object>(), Is.TypeOf<object>());
58+
Assert.That(_provider.Create<object>(), Is.TypeOf<object>());
59+
Assert.That(_provider.IoCConstruct<object>(), Is.TypeOf<object>());
60+
}
61+
62+
[Test]
63+
public void ResolveCreateAndIoCConstructThrowsComponentNotRegisteredExceptionWhenNoTypeRegistered()
64+
{
65+
Assert.That(() => _provider.Resolve<object>(), Throws.TypeOf<ComponentNotRegisteredException>());
66+
Assert.That(() => _provider.Create<object>(), Throws.TypeOf<ComponentNotRegisteredException>());
67+
Assert.That(() => _provider.IoCConstruct<object>(), Throws.TypeOf<ComponentNotRegisteredException>());
68+
}
69+
70+
[Test]
71+
public void ResolveCreateAndIoCConstructThrowsArgumentNullExceptionWhenCalledWithNoTypeArgument()
72+
{
73+
Assert.That(() => _provider.Resolve(null), Throws.TypeOf<ArgumentNullException>());
74+
Assert.That(() => _provider.Create(null), Throws.TypeOf<ArgumentNullException>());
75+
Assert.That(() => _provider.IoCConstruct(null), Throws.TypeOf<ArgumentNullException>());
76+
}
77+
78+
[Test]
79+
public void GetSingletonReturnsSingletonIfTypeRegisteredAsSingleton()
80+
{
81+
var builder = new ContainerBuilder();
82+
builder.Register(c => new object()).SingleInstance();
83+
builder.Update(_container);
84+
85+
Assert.That(_provider.GetSingleton<object>(), Is.TypeOf<object>());
86+
Assert.That(_provider.GetSingleton<object>(), Is.SameAs(_provider.GetSingleton<object>()));
87+
}
88+
89+
[Test]
90+
public void GetSingletonThrowsDependencyResolutionExceptionIfTypeRegisteredButNotAsSingleton()
91+
{
92+
var builder = new ContainerBuilder();
93+
builder.Register(c => new object());
94+
builder.Update(_container);
95+
96+
Assert.That(() => _provider.GetSingleton<object>(), Throws.TypeOf<DependencyResolutionException>());
97+
}
98+
99+
[Test]
100+
public void GetSingletonThrowsComponentNotRegisteredExceptionWhenNoTypeRegistered()
101+
{
102+
Assert.That(() => _provider.GetSingleton<object>(), Throws.TypeOf<ComponentNotRegisteredException>());
103+
}
104+
105+
[Test]
106+
public void GetSingletonThrowsArgumentNullExceptionWhenCalledWithNoTypeArgument()
107+
{
108+
Assert.That(() => _provider.GetSingleton(null), Throws.TypeOf<ArgumentNullException>());
109+
}
110+
111+
[Test]
112+
public void TryResolveResolvesOutParameterWhenMatchingTypeRegistered()
113+
{
114+
var builder = new ContainerBuilder();
115+
builder.Register(c => new object());
116+
builder.Update(_container);
117+
118+
object foo;
119+
var success = _provider.TryResolve(out foo);
120+
121+
Assert.That(foo, Is.TypeOf<object>());
122+
Assert.That(success, Is.True);
123+
}
124+
125+
[Test]
126+
public void RegisterTypeRegistersConcreteTypeAgainstInterface()
127+
{
128+
_provider.RegisterType<IInterface, Concrete>();
129+
var instance = _provider.Resolve<IInterface>();
130+
Assert.That(instance, Is.TypeOf<Concrete>());
131+
Assert.That(instance, Is.Not.SameAs(_provider.Resolve<IInterface>()));
132+
}
133+
134+
[Test]
135+
public void RegisterTypeWithDelegateRegistersConcreteTypeAgainstInterface()
136+
{
137+
_provider.RegisterType<IInterface>(() => new Concrete());
138+
var instance = _provider.Resolve<IInterface>();
139+
Assert.That(instance, Is.TypeOf<Concrete>());
140+
Assert.That(instance, Is.Not.SameAs(_provider.Resolve<IInterface>()));
141+
142+
_provider.RegisterType(typeof(IInterface), () => new Concrete());
143+
Assert.That(_provider.Resolve<IInterface>(), Is.Not.SameAs(_provider.Resolve<IInterface>()));
144+
}
145+
146+
[Test]
147+
public void RegisterTypeWithDelegateAndTypeParameterRegistersConcreteTypeAgainstInterface()
148+
{
149+
_provider.RegisterType(typeof(IInterface), () => new Concrete());
150+
var instance = _provider.Resolve<IInterface>();
151+
Assert.That(instance, Is.TypeOf<Concrete>());
152+
Assert.That(instance, Is.Not.SameAs(_provider.Resolve<IInterface>()));
153+
}
154+
155+
[Test]
156+
public void RegisterTypeThrowsArgumentNullExceptionWhenCalledWithNoFromOrToTypeArgument()
157+
{
158+
Assert.That(() => _provider.RegisterType(null, typeof(object)), Throws.TypeOf<ArgumentNullException>());
159+
Assert.That(() => _provider.RegisterType(typeof(object), (Type)null), Throws.TypeOf<ArgumentNullException>());
160+
}
161+
162+
[Test]
163+
public void RegisterTypeThrowsArgumentNullExceptionWhenCalledWithNoTypeInstanceOrConstructorArgument()
164+
{
165+
Assert.That(() => _provider.RegisterType((Func<object>)null), Throws.TypeOf<ArgumentNullException>());
166+
Assert.That(() => _provider.RegisterType(null, () => new object()), Throws.TypeOf<ArgumentNullException>());
167+
Assert.That(() => _provider.RegisterType(typeof(object), (Func<object>)null), Throws.TypeOf<ArgumentNullException>());
168+
}
169+
170+
[Test]
171+
public void RegisterSingletonRegistersConcreteTypeAsSingletonAgainstInterface()
172+
{
173+
var concreteViaFunc = new Concrete();
174+
_provider.RegisterSingleton<IInterface>(() => concreteViaFunc);
175+
Assert.That(_provider.Resolve<IInterface>(), Is.EqualTo(concreteViaFunc));
176+
Assert.That(_provider.Resolve<IInterface>(), Is.SameAs(_provider.Resolve<IInterface>()));
177+
178+
var concreteInstance = new Concrete();
179+
_provider.RegisterSingleton<IInterface>(concreteInstance);
180+
Assert.That(_provider.Resolve<IInterface>(), Is.EqualTo(concreteInstance));
181+
Assert.That(_provider.Resolve<IInterface>(), Is.SameAs(_provider.Resolve<IInterface>()));
182+
}
183+
184+
[Test]
185+
public void RegisterSingletoneThrowsArgumentNullExceptionWhenCalledWithNoTypeInstanceOrConstructorArgument()
186+
{
187+
Assert.That(() => _provider.RegisterSingleton((IInterface)null), Throws.TypeOf<ArgumentNullException>());
188+
Assert.That(() => _provider.RegisterSingleton((Func<IInterface>)null), Throws.TypeOf<ArgumentNullException>());
189+
Assert.That(() => _provider.RegisterSingleton(null, new object()), Throws.TypeOf<ArgumentNullException>());
190+
Assert.That(() => _provider.RegisterSingleton(null, () => new object()), Throws.TypeOf<ArgumentNullException>());
191+
Assert.That(() => _provider.RegisterSingleton(typeof(object), null), Throws.TypeOf<ArgumentNullException>());
192+
}
193+
194+
[Test]
195+
public void CallbackWhenRegisteredFiresSuccessfully()
196+
{
197+
var called = false;
198+
_provider.CallbackWhenRegistered<IInterface>(() => called = true);
199+
200+
_provider.RegisterType<IInterface, Concrete>();
201+
Assert.That(called, Is.True);
202+
}
203+
204+
[Test]
205+
public void CallbackWhenRegisteredThrowsArgumentNullExceptionWhenCalledWithNoTypeOrActionArgument()
206+
{
207+
Assert.That(() => _provider.CallbackWhenRegistered(null, () => new object()), Throws.TypeOf<ArgumentNullException>());
208+
Assert.That(() => _provider.CallbackWhenRegistered(typeof(object), null), Throws.TypeOf<ArgumentNullException>());
209+
}
210+
211+
private interface IInterface
212+
{
213+
}
214+
215+
private class Concrete : IInterface
216+
{
217+
}
218+
}
219+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
using System.Reflection;
2+
3+
[assembly: AssemblyTitle("Autofac.Extras.Tests.Moq")]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<packages>
3+
<package id="Autofac" version="3.5.0" targetFramework="net40" />
4+
<package id="MvvmCross.HotTuna.CrossCore" version="3.2.1" targetFramework="net45" />
5+
<package id="MvvmCross.PortableSupport" version="3.2.1" targetFramework="net45" />
6+
<package id="NUnit" version="2.6.3" targetFramework="net40" />
7+
</packages>

0 commit comments

Comments
 (0)