Update of /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/test
In directory usw-pr-cvs1:/tmp/cvs-serv3720/src/core/com/mockobjects/test
Modified Files:
TestVerifier.java
Log Message:
Added code from Simon Levitt <sim...@uk...> to stop verify
going into to a recursive loop
Index: TestVerifier.java
===================================================================
RCS file: /cvsroot/mockobjects/mockobjects-java/src/core/com/mockobjects/test/TestVerifier.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TestVerifier.java 29 Jul 2001 19:50:24 -0000 1.1
+++ TestVerifier.java 17 Sep 2002 14:51:11 -0000 1.2
@@ -1,11 +1,16 @@
package com.mockobjects.test;
-import java.io.*;
-import java.util.*;
-import junit.framework.*;
-import com.mockobjects.*;
-import com.mockobjects.util.*;public class TestVerifier extends TestCaseMo {
- private static final Class THIS = TestVerifier.class;class OneVerifiable extends MockObject {
+import com.mockobjects.ExpectationValue;
+import com.mockobjects.MockObject;
+import com.mockobjects.util.TestCaseMo;
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+public class TestVerifier extends TestCaseMo {
+ private static final Class THIS = TestVerifier.class;
+
+ class OneVerifiable extends MockObject {
private ExpectationValue myValue = new ExpectationValue("should fail");
private int anotherField;
@@ -13,12 +18,14 @@
myValue.setFailOnVerify();
myValue.setExpected("good");
}
+
public void setValue(String aValue) {
myValue.setActual(aValue);
}
- }class InheritVerifiable extends OneVerifiable {
}
+ class InheritVerifiable extends OneVerifiable {
+ }
public TestVerifier(String name) {
@@ -26,19 +33,16 @@
}
-
public static void main(String[] args) {
- start(new String[] { THIS.getName()});
+ start(new String[]{THIS.getName()});
}
-
public static Test suite() {
return new TestSuite(THIS);
}
-
public void testInheritVerifiableFails() {
InheritVerifiable inheritVerifiable = new InheritVerifiable();
inheritVerifiable.setValue("bad");
@@ -53,7 +57,6 @@
}
-
public void testInheritVerifiablePasses() {
InheritVerifiable inheritVerifiable = new InheritVerifiable();
inheritVerifiable.setValue("good");
@@ -62,7 +65,6 @@
}
-
public void testNoVerifiables() {
class NoVerifiables extends MockObject {
}
@@ -71,7 +73,6 @@
}
-
public void testOneVerifiableFails() {
OneVerifiable oneVerifiable = new OneVerifiable();
oneVerifiable.setValue("bad");
@@ -86,11 +87,46 @@
}
-
public void testOneVerifiablePasses() {
OneVerifiable oneVerifiable = new OneVerifiable();
oneVerifiable.setValue("good");
oneVerifiable.verify();
}
-}
\ No newline at end of file
+
+
+ class LoopingVerifiable extends MockObject {
+ LoopingVerifiable myRef;
+ boolean inVerify = false;
+
+ LoopingVerifiable(LoopingVerifiable aRef) {
+ setRef(aRef);
+ }
+
+
+ public void setRef(LoopingVerifiable aRef) {
+ myRef = (aRef == null) ? this : aRef;
+ }
+
+ public void verify() {
+ assertTrue("Looping verification detected", !inVerify);
+ inVerify = true;
+ super.verify();
+ inVerify = false;
+ }
+ }
+
+ public void testNoLoopVerifySingleLevel() {
+ new LoopingVerifiable(null).verify();
+ }
+
+
+ public void testNoLoopVerifyMultiLevel() {
+ LoopingVerifiable a = new LoopingVerifiable(null);
+ LoopingVerifiable b = new LoopingVerifiable(a);
+
+ a.setRef(b);
+ a.verify();
+ }
+
+}
|