1 /* Copyright (c) 2000-2003, jMock.org. See bundled LICENSE.txt */
2 package org.jmock.expectation;
3
4 import junit.framework.AssertionFailedError;
5 import org.jmock.AbstractTestCase;
6
7 public class TestVerifier extends AbstractTestCase {
8
9 class OneVerifiable extends MockObject {
10 private ExpectationValue myValue = new ExpectationValue("should fail");
11 private int unusedField;
12
13 public OneVerifiable() {
14 myValue.setFailOnVerify();
15 myValue.setExpected("good");
16 }
17
18 public void setValue(String aValue) {
19 myValue.setActual(aValue);
20 }
21 }
22
23 class InheritVerifiable extends OneVerifiable {
24 }
25
26 class LoopingVerifiable extends MockObject {
27 LoopingVerifiable myRef = this;
28 boolean inVerify = false;
29
30 LoopingVerifiable() {
31 super();
32 }
33
34 public void setRef(LoopingVerifiable aRef) {
35 myRef = aRef;
36 }
37
38 public void verify() {
39 assertTrue("Looping verification detected", !inVerify);
40 inVerify = true;
41 super.verify();
42 inVerify = false;
43 }
44 }
45
46 public void testInheritVerifiableFails() {
47 InheritVerifiable inheritVerifiable = new InheritVerifiable();
48 inheritVerifiable.setValue("bad");
49
50 boolean hasThrownException = false;
51 try {
52 inheritVerifiable.verify();
53 } catch (AssertionFailedError ex) {
54 hasThrownException = true;
55 }
56 assertTrue("Should have thrown exception", hasThrownException);
57 }
58
59
60 public void testInheritVerifiablePasses() {
61 InheritVerifiable inheritVerifiable = new InheritVerifiable();
62 inheritVerifiable.setValue("good");
63
64 inheritVerifiable.verify();
65 }
66
67
68 public void testNoVerifiables() {
69 class NoVerifiables extends MockObject {
70 }
71
72 new NoVerifiables().verify();
73 }
74
75
76 public void testOneVerifiableFails() {
77 OneVerifiable oneVerifiable = new OneVerifiable();
78 oneVerifiable.setValue("bad");
79
80 boolean hasThrownException = false;
81 try {
82 oneVerifiable.verify();
83 } catch (AssertionFailedError ex) {
84 hasThrownException = true;
85 }
86 assertTrue("Should have thrown exception", hasThrownException);
87 }
88
89
90 public void testOneVerifiablePasses() {
91 OneVerifiable oneVerifiable = new OneVerifiable();
92 oneVerifiable.setValue("good");
93
94 oneVerifiable.verify();
95 }
96
97 public void testNoLoopVerifySingleLevel() {
98 new LoopingVerifiable().verify();
99 }
100
101 public void testNoLoopVerifyMultiLevel() {
102 LoopingVerifiable a = new LoopingVerifiable();
103 LoopingVerifiable b = new LoopingVerifiable();
104
105 a.setRef(b);
106 b.setRef(a);
107 a.verify();
108 }
109 }
This page was automatically generated by Maven