예제 #1
0
        public void GetArguments_MultipleParameters_InvokesServiceCreator()
        {
            var subject = new ArgumentGenerator(_serviceLocatorMock.Object, _serviceCreatorMock.Object);
            Type[] types = { typeof(IDisposable), typeof(IFormatProvider) };

            var created1 = new MemoryStream();
            var created2 = CultureInfo.CurrentCulture;
            var container = _containerMock.Object;

            _serviceCreatorMock
                .Setup(creator => creator.Create(types[0], container))
                .Returns(() => created1);

            _serviceCreatorMock
                .Setup(creator => creator.Create(types[1], container))
                .Returns(() => created2);

            var result = subject.GetArguments(types, null).ToList();

            Assert.AreEqual(2, result.Count);
            Assert.AreSame(created1, result[0]);
            Assert.AreSame(created2, result[1]);
        }
예제 #2
0
        public void GetArguments_OneParameterThatDoesntMatchTarget_ThrowsException()
        {
            var subject = new ArgumentGenerator(_serviceLocatorMock.Object, _serviceCreatorMock.Object);

            Assert.Throws<ArgumentException>(() =>
            {
                subject.GetArguments(new[] { typeof(IDisposable) }, "Test").ToList();
            });
        }
예제 #3
0
 public void GetArguments_ZeroParameters_ReturnsEmptyArray()
 {
     var subject = new ArgumentGenerator(_serviceLocatorMock.Object, _serviceCreatorMock.Object);
     Assert.IsEmpty(subject.GetArguments(new Type[0], null));
 }
예제 #4
0
        public void GetArguments_OneParameterThatMatchesTarget_ReturnsTarget()
        {
            var subject = new ArgumentGenerator(_serviceLocatorMock.Object, _serviceCreatorMock.Object);

            var target = new MemoryStream();
            var result = subject.GetArguments(new[] { typeof(IDisposable) }, target).ToList();

            Assert.AreEqual(1, result.Count);
            Assert.AreSame(target, result[0]);
        }