public void should_fail_if_more_than_one_constructor_matched()
    {
        // --arrange
        var target = new GetConstructorWithMaxParametersCount();

        // --act
        Action actual = () => target.Process(new BuildSessionMock(Unit.IsType <Bad>().ToBuildChain()));

        // --assert
        actual.Should().ThrowExactly <ArmatureException>().Which.Message.Should().StartWith("More than one constructor with max parameters count for type");
    }
    public void should_return_no_constructor()
    {
        // --arrange
        var target = new GetConstructorWithMaxParametersCount();
        var actual = new BuildSessionMock(Unit.IsType <NoCtor>().ToBuildChain());

        // --act
        target.Process(actual);

        // --assert
        actual.BuildResult.HasValue.Should().BeFalse();
    }
    public void should_return_constructor()
    {
        // --arrange
        var target = new GetConstructorWithMaxParametersCount();
        var actual = new BuildSessionMock(Unit.IsType <Good>().ToBuildChain());

        // --act
        target.Process(actual);

        // --assert
        actual.BuildResult.Value.As <ConstructorInfo>().GetParameters().Select(_ => _.ParameterType).Should().Equal(typeof(int), typeof(string), typeof(bool));
    }