Skip to content

Refactor SimpleContainer tests and improve code quality #959

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
version: 2
updates:
- package-ecosystem: "nuget" # See documentation for possible values
directory: "/" # Location of package manifests
directory: "/src" # Location of package manifests
schedule:
interval: "weekly"
9 changes: 9 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/Component.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal class Component : IComponent
{
public IDependency1 Dependency1 { get; set; }
public NonInterfaceDependency NonInterfaceDependency { get; set; }
}
}

11 changes: 11 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/Dependency1.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Collections.Generic;

namespace Caliburn.Micro.Core.Tests.Services
{
internal class Dependency1 : IDependency1
{
public IDependency2 Dependency2 { get; set; }
public IList<IEnumerableDependency> EnumerableDependencies { get; set; }
}
}

4 changes: 4 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/Dependency2.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal class Dependency2 : IDependency2 { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal class EnumerableDependency1 : IEnumerableDependency
{
public IDependency2 Dependency2 { get; set; }
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal class EnumerableDependency2 : IEnumerableDependency { }

}
5 changes: 5 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/IComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal interface IComponent { }

}
4 changes: 4 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/IDependency1.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal interface IDependency1 { }
}
4 changes: 4 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/IDependency2.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal interface IDependency2 { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal interface IEnumerableDependency { }
}
4 changes: 4 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/ITestService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal interface ITestService { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal class NonInterfaceDependency { }
}
4 changes: 4 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/SecondDependency1.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal class SecondDependency1 : Dependency1 { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace Caliburn.Micro.Core.Tests.Services
{
public class SingleEmptyConstructorType
{
public SingleEmptyConstructorType()
{

}
}
}
13 changes: 13 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/SingleIntConstructor.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace Caliburn.Micro.Core.Tests.Services
{
public class SingleIntConstructor
{
public int Value { get; private set; }

public SingleIntConstructor(int x)
{
this.Value = x;
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Caliburn.Micro.Core.Tests.Services
{
public class SingleNonEmptyConstructorType
{
public SingleNonEmptyConstructorType(SingleEmptyConstructorType type)
{
}
}
}
5 changes: 5 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/TestService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal class TestService : ITestService { }
internal class AnotherTestService : ITestService { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Caliburn.Micro.Core.Tests.Services
{
internal class TestServiceWithDependency
{
public ITestService Dependency { get; set; }
}
}
18 changes: 18 additions & 0 deletions src/Caliburn.Micro.Core.Tests/Services/TwoConstructors.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace Caliburn.Micro.Core.Tests.Services
{
public class TwoConstructors
{
public int Value { get; set; }

public TwoConstructors()
{
Value = 42;
}

public TwoConstructors(int value)
{
Value = value;
}
}

}
58 changes: 58 additions & 0 deletions src/Caliburn.Micro.Core.Tests/SimpleContainerCheckingForHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
using Caliburn.Micro.Core.Tests.Services;
using Xunit;

namespace Caliburn.Micro.Core.Tests
{
public class SimpleContainerCheckingForHandler
{
[Fact]
public void HasHandlerReturnsFalseWhenHandlerDoesNotExist()
{
Assert.False(new SimpleContainer().HasHandler(typeof(object), null));
Assert.False(new SimpleContainer().HasHandler(null, "Object"));
}

[Fact]
public void HasHandlerReturnsTrueWhenHandlerExists()
{
var container = new SimpleContainer();
container.RegisterPerRequest(typeof(object), "Object", typeof(object));

Assert.True(container.HasHandler(typeof(object), null));
Assert.True(container.HasHandler(null, "Object"));
}

[Fact]
public void GetInstanceShouldReturnNullIfNoHandler()
{
var container = new SimpleContainer();

var resolvedInstance = container.GetInstance(typeof(ITestService), null);

Assert.Null(resolvedInstance);
}

[Fact]
public void HasHandlerShouldReturnTrueIfHandlerExists()
{
var container = new SimpleContainer();
var instance = new TestService();

container.RegisterInstance(typeof(ITestService), null, instance);

var hasHandler = container.HasHandler(typeof(ITestService), null);

Assert.True(hasHandler);
}

[Fact]
public void HasHandlerShouldReturnFalseIfHandlerDoesNotExist()
{
var container = new SimpleContainer();

var hasHandler = container.HasHandler(typeof(ITestService), null);

Assert.False(hasHandler);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using Xunit;

namespace Caliburn.Micro.Core.Tests
{
public class SimpleContainerCreatingAChildContainer
{
[Fact]
public void SingletonInstancesAreTheSameAcrossParentAndChild()
{
var container = new SimpleContainer();
container.Singleton<object>();
var childContainer = container.CreateChildContainer();

var parentInstance = container.GetInstance(typeof(object), null);
var childInstance = childContainer.GetInstance(typeof(object), null);

Assert.Same(parentInstance, childInstance);
}

[Fact]
public void TheChildContainerReturnedContainsParentEntries()
{
var container = new SimpleContainer();
container.PerRequest<object>();
var childContainer = container.CreateChildContainer();

Assert.NotNull(childContainer.GetInstance(typeof(object), null));
}

[Fact]
public void TheChildContainerReturnedIsNotTheSameInstanceAsItsParent()
{
var container = new SimpleContainer();
var childContainer = container.CreateChildContainer();

Assert.NotSame(container, childContainer);
}



[Fact]
public void CreateChildContainerShouldCreateChildContainer()
{
var container = new SimpleContainer();
var childContainer = container.CreateChildContainer();

Assert.NotNull(childContainer);
Assert.NotEqual(container, childContainer);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Xunit;

namespace Caliburn.Micro.Core.Tests
{
public class SimpleContainerGettingASingleInstance
{
[Fact]
public void AnInstanceIsReturnedForTheTypeSpecifiedIfFound()
{
var container = new SimpleContainer();
container.PerRequest<object>();

Assert.NotNull(container.GetInstance(typeof(object), null));
}

[Fact]
public void InstancesCanBeFoundByNameOnly()
{
var container = new SimpleContainer();
container.RegisterPerRequest(typeof(object), "AnObject", typeof(object));

Assert.NotNull(container.GetInstance(null, "AnObject"));
}

[Fact]
public void NullIsReturnedWhenNoInstanceIsFound()
{
Assert.Null(new SimpleContainer().GetInstance(typeof(object), null));
}
}
}
Loading
Loading