public void should_match_specific_objects()
        {
            var foo       = new Foo();
            var blueprint = new SingletonBlueprint(typeof(IFoo), foo);

            var matchesFoo    = blueprint.Matches(new ConstruktionContext(typeof(IFoo)));
            var matchesString = blueprint.Matches(new ConstruktionContext(typeof(string)));

            matchesFoo.ShouldBe(true);
            matchesString.ShouldBe(false);
        }
        public void should_return_the_same_object()
        {
            var foo = new Foo {
                Name = "Name", Age = 10
            };
            var blueprint = new SingletonBlueprint(typeof(IFoo), foo);

            var result = blueprint.Construct(new ConstruktionContext(typeof(IFoo)), new DefaultConstruktionPipeline());

            var fooResult = result.ShouldBeOfType <Foo>();

            fooResult.Name.ShouldBe("Name");
            fooResult.Age.ShouldBe(10);
            fooResult.GetHashCode().ShouldBe(foo.GetHashCode());
        }