public void ShouldRaiseEventWithFuncFourArgs()
        {
            var mock = new Mock <IAdder <string> >();

            mock.Setup(add => add.Do(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <bool>(), It.IsAny <string>()))
            .Raises(m => m.Added += null, (string s, int i, bool b, string v) => new FooArgs {
                Args = new object[] { s, i, b, v }
            });

            var raised = false;

            mock.Object.Added += (sender, args) =>
            {
                raised = true;
                Assert.True(args is FooArgs);
                Assert.Equal("foo", ((FooArgs)args).Args[0]);
                Assert.Equal(5, ((FooArgs)args).Args[1]);
                Assert.Equal(true, ((FooArgs)args).Args[2]);
                Assert.Equal("bar", ((FooArgs)args).Args[3]);
            };

            mock.Object.Do("foo", 5, true, "bar");

            Assert.True(raised);
        }
        public void ThrowsIfVerifyVoidExactlyAndLessOrMoreThanNCalls()
        {
            var mock = new Mock <IFoo>();

            mock.Object.Submit();
            mock.Object.Submit();
            mock.Object.Submit();
            mock.Object.Submit();

            var mex = Assert.Throws <MockException>(() => mock.Verify(foo => foo.Submit(), Times.Exactly(5)));

            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);
            Assert.True(mex.Message.StartsWith(
                            "\nExpected invocation on the mock exactly 5 times, but was 4 times: foo => foo.Submit()"));

            mock.Object.Submit();

            mock.Verify(foo => foo.Submit(), Times.Exactly(5));

            mock.Object.Submit();

            mex = Assert.Throws <MockException>(() => mock.Verify(foo => foo.Submit(), Times.Exactly(5)));
            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);
            Assert.True(mex.Message.StartsWith(
                            "\nExpected invocation on the mock exactly 5 times, but was 6 times: foo => foo.Submit()"));
        }
        public void ShouldReturnEmptyEnumerableObjectsOnLoose()
        {
            var mock = new Mock <IFoo>(MockBehavior.Loose);

            Assert.NotNull(mock.Object.GetEnumerableObjects());
            Assert.Equal(0, mock.Object.GetEnumerableObjects().Cast <object>().Count());
        }
        public void ShouldAllowFluentOnNonVirtualReadWriteProperty()
        {
            var target = Mock.Of <Dto>(x => x.Value == "foo");

            Assert.NotNull(Mock.Get(target));
            Assert.Equal("foo", target.Value);
        }
        public void ShouldSupportMethod()
        {
            var expected = new Mock <IBar>().Object;
            var target   = Mocks.Of <IFoo>().First(x => x.Find(It.IsAny <string>()) == expected);

            Assert.Equal(expected, target.Find("3"));
        }
        public void ShouldOneOfWithPredicateCreateNewMock()
        {
            var target = Mock.Of <IFoo>(x => x.Name == "Foo");

            Assert.NotNull(Mock.Get(target));
            Assert.Equal("Foo", target.Name);
        }
        public void ThrowsIfVerifyVoidBetweenInclusiveAndLessFromOrMoreToCalls()
        {
            var mock = new Mock <IFoo>();

            mock.Object.Submit();

            var mex = Assert.Throws <MockException>(
                () => mock.Verify(foo => foo.Submit(), Times.Between(2, 4, Range.Inclusive)));

            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);
            Assert.True(mex.Message.StartsWith(
                            "\nExpected invocation on the mock between 2 and 4 times (Inclusive), but was 1 times: foo => foo.Submit()"));

            mock.Object.Submit();

            mock.Verify(foo => foo.Submit(), Times.Between(2, 4, Range.Inclusive));

            mock.Object.Submit();

            mock.Verify(foo => foo.Submit(), Times.Between(2, 4, Range.Inclusive));

            mock.Object.Submit();
            mock.Object.Submit();

            mex = Assert.Throws <MockException>(
                () => mock.Verify(foo => foo.Submit(), Times.Between(2, 4, Range.Inclusive)));
            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);
            Assert.True(mex.Message.StartsWith(
                            "\nExpected invocation on the mock between 2 and 4 times (Inclusive), but was 5 times: foo => foo.Submit()"));
        }
Exemple #8
0
        public void ConstructsClassWithNoDefaultConstructor()
        {
            var mock = new Mock <ClassWithNoDefaultConstructor>(MockBehavior.Default, "Hello", 26);

            Assert.Equal("Hello", mock.Object.StringValue);
            Assert.Equal(26, mock.Object.IntValue);
        }
Exemple #9
0
            public void WhenUsingItIsForArgument_ThenSetsReturnValue()
            {
                var foo = Mock.Of <IFoo>(x => x.Do(It.Is <int>(i => i > 0)) == "foo");

                Assert.Equal("foo", foo.Do(5));
                Assert.Equal(default(string), foo.Do(-5));
            }
Exemple #10
0
            public void WhenQueryingByProperties_ThenSetsThemDirectly()
            {
                var foo = Mock.Of <Foo>(x => x.Id == 1 && x.Value == "hello");

                Assert.Equal(1, foo.Id);
                Assert.Equal("hello", foo.Value);
            }
Exemple #11
0
            public void WhenCombiningQueryingWithExplicitBoolean_ThenSetsBothProperties()
            {
                var target = Mock.Of <IFoo>(x => x.IsValid == true && x.Value == "foo");

                Assert.True(target.IsValid);
                Assert.Equal("foo", target.Value);
            }
        public void ThrowsIfVerifyGetGetBetweenInclusiveAndLessFromOrMoreToCalls()
        {
            var mock = new Mock <IFoo>();

            var value = mock.Object.Value;

            MockException mex = Assert.Throws <MockException>(
                () => mock.VerifyGet(foo => foo.Value, Times.Between(2, 4, Range.Inclusive)));

            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);

            value = mock.Object.Value;

            mock.VerifyGet(foo => foo.Value, Times.Between(2, 4, Range.Inclusive));

            value = mock.Object.Value;

            mock.VerifyGet(foo => foo.Value, Times.Between(2, 4, Range.Inclusive));

            value = mock.Object.Value;
            value = mock.Object.Value;

            mex = Assert.Throws <MockException>(() =>
                                                mock.VerifyGet(foo => foo.Value, Times.Between(2, 4, Range.Inclusive)));
            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);
        }
        public void ShouldReturnDefaultForLooseBehaviorOnAbstract()
        {
            var mock = new Mock <Foo>(MockBehavior.Loose);

            Assert.Equal(0, mock.Object.AbstractGet());
            Assert.Null(mock.Object.GetObject());
        }
Exemple #14
0
        public void ShouldOverrideDefaultBehavior()
        {
            var repository = new MockRepository(MockBehavior.Loose);
            var mock       = repository.Create <IFoo>(MockBehavior.Strict);

            Assert.Equal(MockBehavior.Strict, mock.Behavior);
        }
        public void ShouldReturnEmptyArrayTwoDimensionsOnLoose()
        {
            var mock = new Mock <IFoo>(MockBehavior.Loose);

            Assert.NotNull(mock.Object.GetArrayTwoDimensions());
            Assert.Equal(0, mock.Object.GetArrayTwoDimensions().Length);
        }
Exemple #16
0
        public void CallbackCalledWithEightArgumentsForNonVoidMethod()
        {
            var    mock         = new Mock <IFoo>();
            string callbackArg1 = null;
            string callbackArg2 = null;
            string callbackArg3 = null;
            string callbackArg4 = null;
            string callbackArg5 = null;
            string callbackArg6 = null;
            string callbackArg7 = null;
            string callbackArg8 = null;

            mock.Setup(x => x.Execute(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .Callback((string s1, string s2, string s3, string s4, string s5, string s6, string s7, string s8) => { callbackArg1 = s1; callbackArg2 = s2; callbackArg3 = s3; callbackArg4 = s4; callbackArg5 = s5; callbackArg6 = s6; callbackArg7 = s7; callbackArg8 = s8; })
            .Returns("foo");

            mock.Object.Execute("blah1", "blah2", "blah3", "blah4", "blah5", "blah6", "blah7", "blah8");
            Assert.Equal("blah1", callbackArg1);
            Assert.Equal("blah2", callbackArg2);
            Assert.Equal("blah3", callbackArg3);
            Assert.Equal("blah4", callbackArg4);
            Assert.Equal("blah5", callbackArg5);
            Assert.Equal("blah6", callbackArg6);
            Assert.Equal("blah7", callbackArg7);
            Assert.Equal("blah8", callbackArg8);
        }
        public void ThrowsIfVerifyReturningBetweenInclusiveAndLessFromOrMoreToCalls()
        {
            var mock = new Mock <IFoo>();

            mock.Object.Execute("");

            MockException mex = Assert.Throws <MockException>(() =>
                                                              mock.Verify(foo => foo.Execute(""), Times.Between(2, 4, Range.Inclusive)));

            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);

            mock.Object.Execute("");

            mock.Verify(foo => foo.Execute(""), Times.Between(2, 4, Range.Inclusive));

            mock.Object.Execute("");

            mock.Verify(foo => foo.Execute(""), Times.Between(2, 4, Range.Inclusive));

            mock.Object.Execute("");
            mock.Object.Execute("");

            mex = Assert.Throws <MockException>(
                () => mock.Verify(foo => foo.Execute(""), Times.Between(2, 4, Range.Inclusive)));
            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);
        }
        public void ShouldSupportSettingDtoPropertyValue()
        {
            //var target = Mock.Of<IFoo>(x => x.Bar.Id == "foo");
            var target = Mock.Of <Dto>(x => x.Value == "foo");

            Assert.Equal("foo", target.Value);
        }
Exemple #19
0
        public void ConstructsClassWithNoDefaultConstructorAndNullValue()
        {
            var mock = new Mock <ClassWithNoDefaultConstructor>(MockBehavior.Default, null, 26);

            Assert.Equal(null, mock.Object.StringValue);
            Assert.Equal(26, mock.Object.IntValue);
        }
        public void ThrowsIfVerifyVoidMethodWithExpressionFails()
        {
            var mock = new Mock <IFoo>();

            var mex = Assert.Throws <MockException>(() => mock.Verify(f => f.Submit()));

            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);
        }
Exemple #21
0
        public void ProvidesDefaultEnum()
        {
            var provider = new EmptyDefaultValueProvider();

            var value = provider.ProvideDefault(typeof(IFoo).GetProperty("Platform").GetGetMethod());

            Assert.Equal(default(PlatformID), value);
        }
Exemple #22
0
        public void ProvidesDefaultBool()
        {
            var provider = new EmptyDefaultValueProvider();

            var value = provider.ProvideDefault(typeof(IFoo).GetProperty("BoolValue").GetGetMethod());

            Assert.Equal(default(bool), value);
        }
Exemple #23
0
        public void ProvideEmptyQueryableObjects()
        {
            var provider = new EmptyDefaultValueProvider();
            var value    = provider.ProvideDefault(typeof(IFoo).GetProperty("QueryableObjects").GetGetMethod());

            Assert.IsAssignableFrom <IQueryable>(value);
            Assert.Equal(0, ((IQueryable)value).Cast <object>().Count());
        }
Exemple #24
0
        public void ShouldCreateMockWithConstructorArgs()
        {
            var repository = new MockRepository(MockBehavior.Loose);

            var mock = repository.Create <BaseClass>("foo");

            Assert.Equal("foo", mock.Object.Value);
        }
Exemple #25
0
        public void ShouldCreateMocksWithFactoryBehavior()
        {
            var repository = new MockRepository(MockBehavior.Loose);

            var mock = repository.Create <IFormatProvider>();

            Assert.Equal(MockBehavior.Loose, mock.Behavior);
        }
Exemple #26
0
        public void ShouldOverrideDefaultBehaviorWithCtorArgs()
        {
            var repository = new MockRepository(MockBehavior.Loose);
            var mock       = repository.Create <BaseClass>(MockBehavior.Strict, "Foo");

            Assert.Equal(MockBehavior.Strict, mock.Behavior);
            Assert.Equal("Foo", mock.Object.Value);
        }
        public void ThrowsIfVerifyPropertySetWithExpressionFails()
        {
            var mock = new Mock <IFoo>();

            var e = Assert.Throws <MockException>(() => mock.VerifySet(f => f.Value = It.IsAny <int?>()));

            Assert.Equal(MockException.ExceptionReason.VerificationFailed, e.Reason);
        }
        public void ThrowsIfVerifyReturningMethodWithExpressionFails()
        {
            var mock = new Mock <IFoo>();

            var mex = Assert.Throws <MockException>(() => mock.Verify(f => f.Execute("ping")));

            Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason);
        }
Exemple #29
0
        public void MatchesEnumerableParameterValue()
        {
            var mock = new Mock <IFoo>();

            mock.Setup(x => x.DoAddition(new int[] { 2, 4, 6 })).Returns(12);

            Assert.Equal(12, mock.Object.DoAddition(new[] { 2, 4, 6 }));
        }
        public void ShouldSupportIndexer()
        {
            var target = Mocks.Of <IBaz>().First(x => x["3", It.IsAny <bool>()] == 10);

            Assert.NotEqual(10, target["1", true]);
            Assert.Equal(10, target["3", true]);
            Assert.Equal(10, target["3", false]);
        }