1 5 package org.easymock.tests; 6 7 import junit.framework.AssertionFailedError; 8 import junit.framework.TestCase; 9 10 import org.easymock.AbstractMatcher; 11 import org.easymock.ArgumentsMatcher; 12 import org.easymock.MockControl; 13 14 public class ArgumentsMatcherTest extends TestCase { 15 16 MockControl<IMethods> control; 17 18 IMethods mock; 19 20 protected void setUp() { 21 control = MockControl.createStrictControl(IMethods.class); 22 mock = control.getMock(); 23 } 24 25 public void testExpectedArgumentsDelegatedToMatcher() { 26 mock.twoArgumentMethod(0, 5); 27 control.setMatcher(new AbstractMatcher() { 28 public boolean matches(Object [] expected, Object [] actual) { 29 assertEquals(0, ((Integer ) expected[0]).intValue()); 30 assertEquals(5, ((Integer ) expected[1]).intValue()); 31 assertEquals(1, ((Integer ) actual[0]).intValue()); 32 assertEquals(6, ((Integer ) actual[1]).intValue()); 33 return true; 34 } 35 }); 36 control.replay(); 37 mock.twoArgumentMethod(1, 6); 38 control.verify(); 39 } 40 41 public void testExpectedArgumentsDelegatedToMatcher2() { 42 mock.threeArgumentMethod(7, "", "A test"); 43 control.setMatcher(new AbstractMatcher() { 44 public boolean matches(Object [] expected, Object [] actual) { 45 int expectedInt = ((Integer ) expected[0]).intValue(); 46 int actualInt = ((Integer ) actual[0]).intValue(); 47 return expectedInt < actualInt; 48 } 49 }); 50 control.setReturnValue("1"); 51 mock.threeArgumentMethod(6, "", "A test"); 52 control.setReturnValue("2"); 53 mock.threeArgumentMethod(12, "", "A test"); 54 control.setReturnValue("3"); 55 56 control.replay(); 57 mock.threeArgumentMethod(9, "test", "test"); 58 mock.threeArgumentMethod(8, "test", "test"); 59 mock.threeArgumentMethod(13, "test", "test"); 60 control.verify(); 61 } 62 63 public void testErrorString() { 64 mock.twoArgumentMethod(0, 5); 65 control.setMatcher(new ArgumentsMatcher() { 66 public boolean matches(Object [] expected, Object [] actual) { 67 return false; 68 } 69 70 public String toString(Object [] arguments) { 71 return "<<" + arguments[0] + ">>"; 72 } 73 }); 74 control.replay(); 75 boolean failed = false; 76 try { 77 mock.twoArgumentMethod(1, 5); 78 } catch (AssertionFailedError expected) { 79 failed = true; 80 assertEquals("\n Unexpected method call twoArgumentMethod(<<1>>):" 81 + "\n twoArgumentMethod(<<1>>): expected: 0, actual: 1" 82 + "\n twoArgumentMethod(<<0>>): expected: 1, actual: 0", 83 expected.getMessage()); 84 } 85 if (!failed) { 86 fail("exception expected"); 87 } 88 } 89 90 public void testSettingTheSameMatcherIsOk() { 91 try { 92 mock.twoArgumentMethod(1, 2); 93 control.setMatcher(MockControl.ARRAY_MATCHER); 94 control.setMatcher(MockControl.ARRAY_MATCHER); 95 mock.twoArgumentMethod(1, 2); 96 control.setMatcher(MockControl.ARRAY_MATCHER); 97 98 } catch (IllegalStateException unexpected) { 99 fail("no exception should be thrown if the same matcher is set twice"); 100 } 101 } 102 103 public void testAbstractMatcher() { 104 AbstractMatcher trueMatcher = new AbstractMatcher() { 105 protected boolean parameterMatches(Object expected, Object actual) { 106 return true; 107 } 108 }; 109 Object [] arrayWithNull = new Object [] { null }; 110 Object [] arrayWithObject = new Object [] { new Object () }; 111 assertFalse(trueMatcher.matches(arrayWithNull, arrayWithObject)); 112 assertFalse(trueMatcher.matches(arrayWithObject, arrayWithNull)); 113 } 114 }
| Popular Tags
|