/* Copyright (C) 1999 Hewlett-Packard Company This file is part of Mauve. Mauve is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. Mauve is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Mauve; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // Tags: JLS1.0 // Edited on Thu Aug 24 package gnu.testlet.wonka.lang.Cloneable; import gnu.testlet.Testlet; import gnu.testlet.TestHarness; public class CloneableTest implements Testlet, Cloneable { int a = 20; char b = 'b'; Float c = new Float( 10.0f ); protected TestHarness harness; public void test_clone() { CloneableTest tst = null; try { tst = (CloneableTest)clone(); harness.check(true); } catch ( CloneNotSupportedException e ) { harness.fail("$$java.lang.Cloneable$$Error: CloneNotSupportedException should not be thrown here"); } if ( tst == null ) harness.fail("Error: Clone method on Object did not work properly"); else { harness.check(true); if (!( tst.a == a && tst.b == b && tst.c.floatValue() == c.floatValue())) { harness.fail("Error: Clone method on Object did not clone data properly"); } else {harness.check(true);} } // extra test added here class tstc { public Object clone() throws CloneNotSupportedException { return super.clone(); } } try { tstc bln=new tstc(); bln.clone(); harness.fail("Error: CloneNotSupportedException should be thrown here"); } catch ( CloneNotSupportedException e ) {harness.check(true);} } // end code public void test_array() { int []ia = new int[5]; int i; for (i = 0; i < ia.length; i++) { ia[i] = i; } if (!(ia instanceof Cloneable)) { harness.fail("Error: arrays should implement Cloneable"); } else { harness.check(true);} int []ib = (int[])ia.clone(); Class cla = ia.getClass(); Class clb = ib.getClass(); if (cla != clb) { harness.fail("Error: array classes should be equal"); } else { harness.check(true);} for (i = 0; i < ia.length; i++) { if (ib[i] != ia[i]) { harness.fail("Error: mismatch on cloned array at " + i); } else { harness.check(true);} } } public void testall() { test_clone(); test_array(); } public void test (TestHarness the_harness) { harness = the_harness; testall (); } }