KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > easymock > tests > ArgumentsMatcherTest


1 /*
2  * Copyright (c) 2001-2005 OFFIS. This program is made available under the terms of
3  * the MIT License.
4  */

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 JavaDoc[] expected, Object JavaDoc[] actual) {
29                 assertEquals(0, ((Integer JavaDoc) expected[0]).intValue());
30                 assertEquals(5, ((Integer JavaDoc) expected[1]).intValue());
31                 assertEquals(1, ((Integer JavaDoc) actual[0]).intValue());
32                 assertEquals(6, ((Integer JavaDoc) 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 JavaDoc[] expected, Object JavaDoc[] actual) {
45                 int expectedInt = ((Integer JavaDoc) expected[0]).intValue();
46                 int actualInt = ((Integer JavaDoc) 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 JavaDoc[] expected, Object JavaDoc[] actual) {
67                 return false;
68             }
69
70             public String JavaDoc toString(Object JavaDoc[] 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 JavaDoc 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 JavaDoc expected, Object JavaDoc actual) {
106                 return true;
107             }
108         };
109         Object JavaDoc[] arrayWithNull = new Object JavaDoc[] { null };
110         Object JavaDoc[] arrayWithObject = new Object JavaDoc[] { new Object JavaDoc() };
111         assertFalse(trueMatcher.matches(arrayWithNull, arrayWithObject));
112         assertFalse(trueMatcher.matches(arrayWithObject, arrayWithNull));
113     }
114 }
Popular Tags