// Tags: JDK1.1 // Uses: rf_help rf2_help // Copyright (C) 2002 Stephen Crawley <crawley@dstc.edu.au> // 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. */ package gnu.testlet.wonka.lang.Class; import gnu.testlet.Testlet; import gnu.testlet.TestHarness; public class reflect2 implements Testlet { private TestHarness harness; private Class help; private Class help2; private Class help_inner; private Class help2_inner; private Class help2_inner_inner; public Class getClass(String name) { try { return Class.forName(name); } catch (Throwable ex) { ex.printStackTrace(); return null; } } public void test_getClasses() { harness.checkPoint("getClasses"); Class[] inner = (new Object()).getClass().getClasses(); harness.check(inner.length , 0); inner = help.getClasses(); harness.check(inner.length , 1); if(inner.length >= 1) { harness.check(inner[0], help_inner); } inner = help2.getClasses(); harness.check(inner.length , 3); for(int i=0 ; i < inner.length ; i++) { System.out.println("inner["+i+"] = "+inner[i]); } inner = help_inner.getClasses(); harness.check(inner.length , 0); inner = help2_inner.getClasses(); harness.check(inner.length == 1 && inner[0].equals(help2_inner_inner)); inner = help2_inner_inner.getClasses(); harness.check(inner.length == 0); } public void test_getDeclaringClass() { harness.checkPoint("getDeclaringClass"); Class outer = help.getDeclaringClass(); harness.check(outer == null); outer = help2.getDeclaringClass(); harness.check(outer == null); outer = help_inner.getDeclaringClass(); harness.check(outer != null && outer.equals(help)); outer = help2_inner.getDeclaringClass(); harness.check(outer != null && outer.equals(help2)); outer = help2_inner_inner.getDeclaringClass(); harness.check(outer != null && outer.equals(help2_inner)); } public void test_getDeclaredClasses() { harness.checkPoint("getDeclaredClasses"); Class[] inner = help.getDeclaredClasses(); harness.check(inner.length == 1 && inner[0].equals(help_inner)); inner = help2.getDeclaredClasses(); harness.check(inner.length == 8); inner = help2_inner.getDeclaredClasses(); harness.check(inner.length == 1 && inner[0].equals(help2_inner_inner)); inner = help2_inner_inner.getDeclaredClasses(); harness.check(inner.length == 0); } public void test(TestHarness harness) { this.harness = harness; help = getClass("gnu.testlet.wonka.lang.Class.rf_help"); help2 = getClass("gnu.testlet.wonka.lang.Class.rf2_help"); help_inner = getClass("gnu.testlet.wonka.lang.Class.rf_help$inner"); help2_inner = getClass("gnu.testlet.wonka.lang.Class.rf2_help$inner_class_1"); help2_inner_inner = getClass("gnu.testlet.wonka.lang.Class." + "rf2_help$inner_class_1$inner_inner_class_1"); test_getClasses(); test_getDeclaringClass(); test_getDeclaredClasses(); } }