/// <summary> /// Sets up a mock, and runs through methods as specified by characters in <paramref name="methodOrder"/>. /// </summary> /// <param name="mockConfigurer">A delegate to use to configure the mock.</param> /// <param name="isValid">Whether the order should be valid or not.</param> /// <param name="methodOrder">The method order (e.g. "ABC", "ABBC").</param> private static void AssertOrderValidity(ConfigureMockDelegate mockConfigurer, bool isValid, string methodOrder) { MockRepository mocks = new MockRepository(); I1 i = mocks.StrictMock(typeof(I1)) as I1; mockConfigurer(mocks, i); mocks.ReplayAll(); try { foreach (char c in methodOrder) { switch (c) { case 'A': i.A(); break; case 'B': i.B(); break; case 'C': i.C(); break; default: throw new NotSupportedException(); } } mocks.VerifyAll(); } catch (Exceptions.ExpectationViolationException ex) { if (isValid) { Assert.False(true, string.Format("Order {0} was supposed to be ok, but got error: {1}", methodOrder, ex.Message)); } else { return; } } if (!isValid) { Assert.False(true, string.Format("Order {0} was supposed to fail, but did not.", methodOrder)); } }
public void TestOrderedAtLeastOnce() { ConfigureMockDelegate deleg = new ConfigureMockDelegate(ConfigureOrderedAtLeastOnce); // Let's check some of the valid possibilities AssertOrderValidity(deleg, true, "ABC"); AssertOrderValidity(deleg, true, "ABBC"); AssertOrderValidity(deleg, true, "ABBBBBBBBBBBBBBBBBBBBC"); // Let's check some invalid ones AssertOrderValidity(deleg, false, "BC"); // Missing A AssertOrderValidity(deleg, false, "AC"); // Too few Bs }
public void TestOrderedTimesMinNonZeroMaxHigherThanMin() { ConfigureMockDelegate deleg = new ConfigureMockDelegate(ConfigureOrderedTimesMinNonZeroMaxHigherThanMin); // Let's check all the valid possibilities AssertOrderValidity(deleg, true, "ABC"); AssertOrderValidity(deleg, true, "ABBC"); AssertOrderValidity(deleg, true, "ABBBC"); // Let's check some invalid ones AssertOrderValidity(deleg, false, "BC"); // Missing A AssertOrderValidity(deleg, false, "AC"); // Too few Bs AssertOrderValidity(deleg, false, "ABBBBC"); // Too many Bs }
public void TestOrderedTimesMin0() { ConfigureMockDelegate deleg = new ConfigureMockDelegate(ConfigureOrderedTimesMin0); // Let's check all the valid possibilities AssertOrderValidity(deleg, true, ""); AssertOrderValidity(deleg, true, "A"); AssertOrderValidity(deleg, true, "C"); AssertOrderValidity(deleg, true, "B"); AssertOrderValidity(deleg, true, "AB"); AssertOrderValidity(deleg, true, "AC"); AssertOrderValidity(deleg, true, "BC"); AssertOrderValidity(deleg, true, "ABC"); // Let's check some invalid ones AssertOrderValidity(deleg, false, "CB"); AssertOrderValidity(deleg, false, "CA"); AssertOrderValidity(deleg, false, "BA"); AssertOrderValidity(deleg, false, "AA"); AssertOrderValidity(deleg, false, "ABB"); }
/// <summary> /// Sets up a mock, and runs through methods as specified by characters in <paramref name="methodOrder"/>. /// </summary> /// <param name="mockConfigurer">A delegate to use to configure the mock.</param> /// <param name="isValid">Whether the order should be valid or not.</param> /// <param name="methodOrder">The method order (e.g. "ABC", "ABBC").</param> private static void AssertOrderValidity( ConfigureMockDelegate mockConfigurer, bool isValid, string methodOrder ) { MockRepository mocks = new MockRepository(); I1 i = mocks.StrictMock(typeof(I1)) as I1; mockConfigurer(mocks, i); mocks.ReplayAll(); try { foreach (char c in methodOrder) { switch (c) { case 'A': i.A(); break; case 'B': i.B(); break; case 'C': i.C(); break; default: throw new NotSupportedException(); } } mocks.VerifyAll(); } catch (Exceptions.ExpectationViolationException ex) { if (isValid) { Assert.False(true, string.Format("Order {0} was supposed to be ok, but got error: {1}", methodOrder, ex.Message)); } else { return; } } if (!isValid) { Assert.False(true, string.Format("Order {0} was supposed to fail, but did not.", methodOrder)); } }