001 // jademx - JADE management using JMX 002 // Copyright 2005 Caboodle Networks, Inc. 003 // 004 // This library is free software; you can redistribute it and/or 005 // modify it under the terms of the GNU Lesser General Public 006 // License as published by the Free Software Foundation; either 007 // version 2.1 of the License, or (at your option) any later version. 008 // 009 // This library is distributed in the hope that it will be useful, 010 // but WITHOUT ANY WARRANTY; without even the implied warranty of 011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 // Lesser General Public License for more details. 013 // 014 // You should have received a copy of the GNU Lesser General Public 015 // License along with this library; if not, write to the Free Software 016 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA 017 018 package jade.jademx.server; 019 020 import javax.management.MBeanServer; 021 022 import jade.jademx.JadeMXSuiteTest; 023 import junit.framework.Test; 024 import junit.framework.TestCase; 025 import junit.framework.TestSuite; 026 027 /** 028 * StaticMethod class test 029 * @author David Bernstein, <a href="http://www.caboodlenetworks.com" 030 * >Caboodle Networks, Inc.</a> 031 */ 032 public class StaticMethodTest extends TestCase { 033 034 // tests 035 036 /** a class for testing StaticMethod */ 037 private static class StaticMethodSubclass extends StaticMethod { 038 /** default constructor */ 039 public StaticMethodSubclass() { 040 this("foo"); 041 } 042 /** 043 * constructor where can set method name 044 * @param methodName method to use for getting mbean server 045 */ 046 public StaticMethodSubclass( String methodName ) { 047 super( 048 StaticMethodSubclass.class.getName(), 049 methodName, 050 new Class[] { String.class, String.class }, 051 new Object[] { "baz", "quux" } 052 ); 053 } 054 /** 055 * default method to use for getting mbean server 056 * @param a dummy 057 * @param b dummy 058 * @return null mbean server 059 */ 060 public static MBeanServer foo( String a, String b ) { 061 return null; 062 } 063 /** 064 * exception-raising method to use for getting mbean server 065 * @param a dummy 066 * @param b dummy 067 * @throws RuntimeException always 068 * @return by throwing exception 069 */ 070 public static MBeanServer bar( String a, String b ) { 071 throw new RuntimeException("intentional runtime exception for testing"); 072 } 073 } 074 075 076 /** 077 * test toString() for StaticMethod 078 */ 079 public void testStaticMethodToString() { 080 StaticMethod sm = new StaticMethodSubclass(); 081 assertEquals( 082 "jade.jademx.server.StaticMethodTest.StaticMethodSubclass"+ 083 "[jade.jademx.server.StaticMethodTest$StaticMethodSubclass."+ 084 "foo(java.lang.String baz, java.lang.String quux)]", 085 sm.toString()); 086 } 087 088 /** 089 * test getting mbean server with no issues 090 */ 091 public void testStaticMethodGetMBeanServer() { 092 StaticMethod sm = new StaticMethodSubclass(); 093 assertNull( sm.getMBeanServer() ); 094 } 095 096 097 /** 098 * test getting mbean server with exception raised 099 */ 100 public void testStaticMethodGetMBeanServerException() { 101 try { 102 new StaticMethodSubclass("bar"); 103 fail("expected exception not raised"); 104 } 105 catch ( RuntimeException re ) { 106 assertTrue(true); 107 } 108 } 109 110 111 // suite 112 113 /** 114 * return the implicit suite of tests 115 * @return the implicit suite of tests 116 */ 117 public static Test suite() { 118 return new TestSuite( 119 StaticMethodTest.class, 120 JadeMXSuiteTest.nameWithClass( StaticMethodTest.class, 121 "testing StaticMethod: finding MBeanServer via static method") ); 122 } 123 124 125 126 }