1 5 package org.easymock.tests; 6 7 import junit.framework.AssertionFailedError; 8 import junit.framework.TestCase; 9 10 import org.easymock.MockControl; 11 12 public class UsageCallCountTest extends TestCase { 13 14 private MockControl<VoidMethodInterface> control; 15 16 private VoidMethodInterface mock; 17 18 private interface VoidMethodInterface { 19 void method(); 20 } 21 22 protected void setUp() { 23 control = MockControl.createControl(VoidMethodInterface.class); 24 mock = control.getMock(); 25 } 26 27 public void testMockWithNoExpectedCallsPassesWithNoCalls() { 28 control.replay(); 29 control.verify(); 30 } 31 32 public void testMockWithNoExpectedCallsFailsAtFirstCall() { 33 control.replay(); 34 assertMethodCallFails(); 35 } 36 37 public void testMockWithOneExpectedCallFailsAtVerify() { 38 callMethodOnce(); 39 control.replay(); 40 assertVerifyFails(); 41 } 42 43 public void testMockWithOneExpectedCallPassesWithOneCall() { 44 callMethodOnce(); 45 control.replay(); 46 callMethodOnce(); 47 control.verify(); 48 } 49 50 public void testMockWithOneExpectedCallFailsAtSecondCall() { 51 callMethodOnce(); 52 control.replay(); 53 callMethodOnce(); 54 assertMethodCallFails(); 55 } 56 57 public void testTooFewCalls() { 58 callMethodThreeTimes(); 59 control.replay(); 60 callMethodTwice(); 61 assertVerifyFails(); 62 } 63 64 public void testCorrectNumberOfCalls() { 65 callMethodThreeTimes(); 66 control.replay(); 67 callMethodThreeTimes(); 68 control.verify(); 69 } 70 71 public void testTooManyCalls() { 72 callMethodThreeTimes(); 73 control.replay(); 74 callMethodThreeTimes(); 75 assertMethodCallFails(); 76 } 77 78 private void callMethodOnce() { 79 mock.method(); 80 } 81 82 private void callMethodTwice() { 83 mock.method(); 84 mock.method(); 85 } 86 87 private void callMethodThreeTimes() { 88 mock.method(); 89 mock.method(); 90 mock.method(); 91 } 92 93 private void assertVerifyFails() { 94 try { 95 control.verify(); 96 fail("Expected AssertionFailedError"); 97 } catch (AssertionFailedError expected) { 98 } 99 } 100 101 private void assertMethodCallFails() { 102 try { 103 mock.method(); 104 fail("Expected AssertionFailedError"); 105 } catch (AssertionFailedError expected) { 106 } 107 } 108 109 public void testNoUpperLimitWithoutCallCountSet() { 110 mock.method(); 111 control.setVoidCallable(MockControl.ONE_OR_MORE); 112 control.replay(); 113 assertVerifyFails(); 114 mock.method(); 115 control.verify(); 116 mock.method(); 117 control.verify(); 118 mock.method(); 119 control.verify(); 120 } 121 } 122 | Popular Tags |