Clover Coverage Report - EasyMock 2.4
Coverage timestamp: mer. juil. 2 2008 02:17:38 CEST
50   148   14   4,55
0   116   0,28   2,75
11     1,27  
4    
 
 
  AnswerTest       Line # 15 50 14 95,1% 0.9508197
  AnswerTest.A       Line # 119 0 0 - -1.0
  AnswerTest.B       Line # 120 0 0 - -1.0
  AnswerTest.C       Line # 122 0 0 - -1.0
 
  (5)
 
1    /*
2    * Copyright (c) 2001-2008 OFFIS, Tammo Freese.
3    * This program is made available under the terms of the MIT License.
4    */
5    package org.easymock.tests2;
6   
7    import static org.easymock.EasyMock.*;
8    import static org.junit.Assert.*;
9   
10    import org.easymock.IAnswer;
11    import org.easymock.tests.IMethods;
12    import org.junit.Before;
13    import org.junit.Test;
14   
 
15    public class AnswerTest {
16   
17    private IMethods mock;
18   
 
19  5 toggle @Before
20    public void setUp() {
21  5 mock = createMock(IMethods.class);
22    }
23   
 
24  1 toggle @SuppressWarnings("unchecked")
25    @Test
26    public void answer() {
27  1 IAnswer firstAnswer = new IAnswer() {
 
28  1 toggle public Object answer() {
29  1 assertArrayEquals(new Object[] { 1, "2", "3" },
30    getCurrentArguments());
31  1 return "Call answered";
32    }
33    };
34   
35  1 IAnswer secondAnswer = new IAnswer() {
 
36  1 toggle public Object answer() {
37  1 assertArrayEquals(new Object[] { 1, "2", "3" },
38    getCurrentArguments());
39  1 throw new IllegalStateException("Call answered");
40    }
41    };
42   
43  1 expect(mock.threeArgumentMethod(1, "2", "3")).andAnswer(firstAnswer)
44    .andReturn("Second call").andAnswer(secondAnswer).andReturn(
45    "Fourth call");
46   
47  1 replay(mock);
48   
49  1 assertEquals("Call answered", mock.threeArgumentMethod(1, "2", "3"));
50  1 assertEquals("Second call", mock.threeArgumentMethod(1, "2", "3"));
51  1 try {
52  1 mock.threeArgumentMethod(1, "2", "3");
53  0 fail();
54    } catch (IllegalStateException expected) {
55  1 assertEquals("Call answered", expected.getMessage());
56    }
57  1 assertEquals("Fourth call", mock.threeArgumentMethod(1, "2", "3"));
58   
59  1 verify(mock);
60    }
61   
 
62  1 toggle @SuppressWarnings("unchecked")
63    @Test
64    public void stubAnswer() {
65  1 IAnswer firstAnswer = new IAnswer() {
 
66  3 toggle public Object answer() {
67  3 assertArrayEquals(new Object[] { 1, "2", "3" },
68    getCurrentArguments());
69  3 return "Call answered";
70    }
71    };
72   
73  1 IAnswer secondAnswer = new IAnswer() {
 
74  1 toggle public Object answer() {
75  1 assertArrayEquals(new Object[] { 1, "2", "4" },
76    getCurrentArguments());
77  1 return "Call answered";
78    }
79    };
80   
81  1 expect(mock.threeArgumentMethod(1, "2", "3")).andReturn(42)
82    .andStubAnswer(firstAnswer);
83  1 expect(mock.threeArgumentMethod(1, "2", "4")).andStubAnswer(
84    secondAnswer);
85   
86  1 replay(mock);
87   
88  1 assertEquals(42, mock.threeArgumentMethod(1, "2", "3"));
89  1 assertEquals("Call answered", mock.threeArgumentMethod(1, "2", "3"));
90  1 assertEquals("Call answered", mock.threeArgumentMethod(1, "2", "4"));
91  1 assertEquals("Call answered", mock.threeArgumentMethod(1, "2", "3"));
92  1 assertEquals("Call answered", mock.threeArgumentMethod(1, "2", "3"));
93   
94  1 verify(mock);
95    }
96   
 
97  1 toggle @Test
98    public void nullAnswerNotAllowed() {
99  1 try {
100  1 expect(mock.threeArgumentMethod(1, "2", "3")).andAnswer(null);
101  0 fail();
102    } catch (NullPointerException expected) {
103  1 assertEquals("answer object must not be null", expected
104    .getMessage());
105    }
106    }
107   
 
108  1 toggle @Test
109    public void nullStubAnswerNotAllowed() {
110  1 try {
111  1 expect(mock.threeArgumentMethod(1, "2", "3")).andStubAnswer(null);
112  0 fail();
113    } catch (NullPointerException expected) {
114  1 assertEquals("answer object must not be null", expected
115    .getMessage());
116    }
117    }
118   
 
119    public static class A {}
 
120    public static class B extends A{}
121   
 
122    public static interface C {
123    A foo();
124    }
125   
 
126  1 toggle @Test
127    public void testGenericityFlexibility() {
128   
129  1 final C c = createMock(C.class);
130  1 final B b = new B();
131   
132  1 IAnswer<B> answer = new IAnswer<B>() {
133   
 
134  2 toggle public B answer() throws Throwable {
135  2 return b;
136    }
137   
138    };
139   
140  1 expect(c.foo()).andAnswer(answer);
141  1 expect(c.foo()).andStubAnswer(answer);
142   
143  1 replay(c);
144  1 assertSame(b, c.foo());
145  1 assertSame(b, c.foo());
146  1 verify(c);
147    }
148    }