From: Jeff M. <cus...@us...> - 2002-09-17 14:51:14
|
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(); + } + +} |