/************************************************************************** * Copyright (c) 2001 by Acunia N.V. All rights reserved. * * * * This software is copyrighted by and is the sole property of Acunia N.V. * * and its licensors, if any. All rights, title, ownership, or other * * interests in the software remain the property of Acunia N.V. and its * * licensors, if any. * * * * This software may only be used in accordance with the corresponding * * license agreement. Any unauthorized use, duplication, transmission, * * distribution or disclosure of this software is expressly forbidden. * * * * This Copyright notice may not be removed or modified without prior * * written consent of Acunia N.V. * * * * Acunia N.V. reserves the right to modify this software without notice. * * * * Acunia N.V. * * Vanden Tymplestraat 35 info@acunia.com * * 3000 Leuven http://www.acunia.com * * Belgium - EUROPE * **************************************************************************/ package gnu.testlet.wonka.util.Observable; //complete the package name ... import gnu.testlet.Testlet; import gnu.testlet.TestHarness; import java.util.*; // at least the class you are testing ... /** * this file contains test for java.util.Observable <br> * */ public class AcuniaObservableTest implements Testlet, Observer { protected TestHarness th; public boolean updated; public Object arg=this; public Observable obs; public void test (TestHarness harness) { th = harness; th.setclass("java.util.Observable"); test_addObserver(); test_countObservers(); test_deleteObserver(); test_deleteObservers(); test_clearChanged(); test_hasChanged(); test_notifyObservers(); test_setChanged(); } public void clear(){ updated = false; obs = null; arg = this; } public boolean verify(Observable o, Object ar){ return updated && (o == obs) && (ar == arg); } public void update(Observable ob, Object ar){ updated = true; arg = ar; obs = ob; } /** * implemented. <br> * */ public void test_addObserver(){ th.checkPoint("addObserver(java.util.Observer)void"); Observable o = new Observable(); o.addObserver(this); o.addObserver(this); th.check(o.countObservers(), 1 , "observer only added once ..."); o.addObserver(new AcuniaObservableTest()); th.check(o.countObservers(), 2 , "observer added -- 1"); o.addObserver(new AcuniaObservableTest()); o.addObserver(new AcuniaObservableTest()); th.check(o.countObservers(), 4 , "observer added -- 2"); try { o.addObserver(null); th.check(o.countObservers(), 4 , "observer added -- 3"); } catch (NullPointerException npe){ th.check(true); } } /** * implemented. <br> * */ public void test_countObservers(){ th.checkPoint("countObservers()int"); Observable o = new Observable(); th.check(o.countObservers(), 0 , "no observers added"); o.addObserver(this); o.addObserver(this); th.check(o.countObservers(), 1 , "observer only added once ..."); o.addObserver(new AcuniaObservableTest()); th.check(o.countObservers(), 2 , "observer added -- 1"); o.addObserver(new AcuniaObservableTest()); o.addObserver(new AcuniaObservableTest()); th.check(o.countObservers(), 4 , "observer added -- 2"); o.deleteObserver(this); th.check(o.countObservers(), 3 , "observer deleted -- 3"); o.deleteObservers(); th.check(o.countObservers(), 0 , "all observers deleted -- 4"); o.addObserver(this); th.check(o.countObservers(), 1 , "one observer added -- 5"); try { o.deleteObserver(null); th.check(o.countObservers(), 1 , "one observer added -- 6"); } catch (NullPointerException npe){ th.check(false); } } /** * implemented. <br> * */ public void test_deleteObserver(){ th.checkPoint("deleteObserver(java.util.Observer)void"); Observable o = new Observable(); o.addObserver(this); Observer obs = new AcuniaObservableTest(); o.addObserver(obs); o.deleteObserver(this); th.check(o.countObservers(), 1 , "observer deleted -- 1"); o.deleteObserver(this); th.check(o.countObservers(), 1 , "observer already deleted -- 2"); o.deleteObserver(obs); th.check(o.countObservers(), 0 , "observer deleted -- 3"); o.deleteObserver(obs); th.check(o.countObservers(), 0 , "observer already deleted -- 4"); o.addObserver(this); th.check(o.countObservers(), 1 , "observer added -- 5"); o.deleteObserver(this); th.check(o.countObservers(), 0 , "observer deleted -- 6"); } /** * implemented. <br> * */ public void test_deleteObservers(){ th.checkPoint("deleteObservers()void"); Observable o = new Observable(); o.addObserver(this); Observer obs = new AcuniaObservableTest(); o.addObserver(obs); o.deleteObservers(); th.check(o.countObservers(), 0 , "observers deleted -- 1"); o.addObserver(this); th.check(o.countObservers(), 1 , "observer added -- 5"); o.deleteObservers(); th.check(o.countObservers(), 0 , "observer deleted -- 6"); } /** * implemented. <br> * */ public void test_hasChanged(){ th.checkPoint("hasChanged()boolean"); AcuniaObservable ao = new AcuniaObservable(); th.check(! ao.hasChanged() , "not changed -- 1"); ao.setChanged(); th.check( ao.hasChanged() , "changed -- 2"); ao.setChanged(); th.check( ao.hasChanged() , "changed -- 3"); ao.clearChanged(); th.check(! ao.hasChanged() , "not changed -- 4"); ao.clearChanged(); th.check(! ao.hasChanged() , "not changed -- 5"); ao.setChanged(); th.check( ao.hasChanged() , "changed -- 6"); ao.clearChanged(); th.check(! ao.hasChanged() , "not changed -- 7"); } /** * not implemented. <br> * protected method ... * @see hasChanged */ public void test_clearChanged(){ th.checkPoint("clearChanged()void"); } /** * not implemented. <br> * protected method ... * @see hasChanged */ public void test_setChanged(){ th.checkPoint("setChanged()void"); } /** * not implemented. <br> * */ public void test_notifyObservers(){ th.checkPoint("notifyObservers()void"); AcuniaObservable o = new AcuniaObservable(); o.addObserver(this); AcuniaObservableTest obs = new AcuniaObservableTest(); o.addObserver(obs); o.setChanged(); try { o.notifyObservers(); } catch(NullPointerException np){ th.fail("bad !"); } // o.deleteObserver(null); clear(); obs.clear(); o.setChanged(); o.notifyObservers(); th.check(!o.hasChanged(),"cleared by notifyObservers"); th.check(verify(o,null), "update recieved -- 1"); th.check(obs.verify(o,null), "update recieved -- 2"); th.checkPoint("notifyObservers(java.lang.Object)void"); clear(); obs.clear(); o.notifyObservers(null); th.check(!verify(o,null), "update recieved -- 3"); th.check(!obs.verify(o,null), "update recieved -- 4"); o.setChanged(); clear(); obs.clear(); o.notifyObservers("a"); th.check(!o.hasChanged(),"cleared by notifyObservers"); th.check(verify(o,"a"), "update recieved -- 5"); th.check(obs.verify(o,"a"), "update recieved -- 6"); } }