KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > compliance > openmbean > OpenMBeanAttributeInfoSupportTestCase


1 /*
2  * JBoss, the OpenSource J2EE webOS
3  *
4  * Distributable under LGPL license.
5  * See terms of license at gnu.org.
6  */

7
8 package test.compliance.openmbean;
9
10 import junit.framework.TestCase;
11
12 import java.io.ByteArrayInputStream;
13 import java.io.ByteArrayOutputStream;
14 import java.io.ObjectInputStream;
15 import java.io.ObjectOutputStream;
16
17 import javax.management.openmbean.ArrayType;
18 import javax.management.openmbean.CompositeType;
19 import javax.management.openmbean.OpenDataException;
20 import javax.management.openmbean.OpenMBeanAttributeInfoSupport;
21 import javax.management.openmbean.OpenType;
22 import javax.management.openmbean.SimpleType;
23 import javax.management.openmbean.TabularDataSupport;
24 import javax.management.openmbean.TabularType;
25
26 /**
27  * Open MBean Attribute Info tests.<p>
28  *
29  * @author <a HREF="mailto:Adrian.Brock@HappeningTimes.com">Adrian Brock</a>.
30  */

31 public class OpenMBeanAttributeInfoSupportTestCase
32   extends TestCase
33 {
34    // Static --------------------------------------------------------------------
35

36    // Attributes ----------------------------------------------------------------
37

38    // Constructor ---------------------------------------------------------------
39

40    /**
41     * Construct the test
42     */

43    public OpenMBeanAttributeInfoSupportTestCase(String s)
44    {
45       super(s);
46    }
47
48    // Tests ---------------------------------------------------------------------
49

50    public void testOpenMBeanAttributeInfoSupport()
51       throws Exception
52    {
53       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
54          "name", "description", SimpleType.STRING, true, true, false);
55       assertEquals("name", info.getName());
56       assertEquals("description", info.getDescription());
57       assertEquals("java.lang.String", info.getType());
58       assertEquals(true, info.isWritable());
59       assertEquals(true, info.isReadable());
60       assertEquals(false, info.isIs());
61
62       info = new OpenMBeanAttributeInfoSupport(
63          "name", "description", SimpleType.STRING, true, true, false, "default");
64       assertEquals("name", info.getName());
65       assertEquals("description", info.getDescription());
66       assertEquals("java.lang.String", info.getType());
67       assertEquals(true, info.isWritable());
68       assertEquals(true, info.isReadable());
69       assertEquals(false, info.isIs());
70       assertEquals("default", info.getDefaultValue());
71       assertEquals(true, info.hasDefaultValue());
72
73       info = new OpenMBeanAttributeInfoSupport(
74          "name", "description", SimpleType.STRING, true, true, false, null);
75       assertEquals("name", info.getName());
76       assertEquals("description", info.getDescription());
77       assertEquals("java.lang.String", info.getType());
78       assertEquals(true, info.isWritable());
79       assertEquals(true, info.isReadable());
80       assertEquals(false, info.isIs());
81       assertEquals(null, info.getDefaultValue());
82       assertEquals(false, info.hasDefaultValue());
83
84       info = new OpenMBeanAttributeInfoSupport(
85          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3), new Integer(2), new Integer(4));
86       assertEquals("name", info.getName());
87       assertEquals("description", info.getDescription());
88       assertEquals("java.lang.Integer", info.getType());
89       assertEquals(true, info.isWritable());
90       assertEquals(true, info.isReadable());
91       assertEquals(false, info.isIs());
92       assertEquals(new Integer(3), info.getDefaultValue());
93       assertEquals(new Integer(2), info.getMinValue());
94       assertEquals(new Integer(4), info.getMaxValue());
95
96       info = new OpenMBeanAttributeInfoSupport(
97          "name", "description", SimpleType.INTEGER, true, true, false, null, new Integer(2), new Integer(4));
98       assertEquals("name", info.getName());
99       assertEquals("description", info.getDescription());
100       assertEquals("java.lang.Integer", info.getType());
101       assertEquals(true, info.isWritable());
102       assertEquals(true, info.isReadable());
103       assertEquals(false, info.isIs());
104       assertEquals(null, info.getDefaultValue());
105       assertEquals(new Integer(2), info.getMinValue());
106       assertEquals(new Integer(4), info.getMaxValue());
107
108       info = new OpenMBeanAttributeInfoSupport(
109          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3), null, new Integer(4));
110       assertEquals("name", info.getName());
111       assertEquals("description", info.getDescription());
112       assertEquals("java.lang.Integer", info.getType());
113       assertEquals(true, info.isWritable());
114       assertEquals(true, info.isReadable());
115       assertEquals(false, info.isIs());
116       assertEquals(new Integer(3), info.getDefaultValue());
117       assertEquals(null, info.getMinValue());
118       assertEquals(new Integer(4), info.getMaxValue());
119
120       info = new OpenMBeanAttributeInfoSupport(
121          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3), new Integer(2), null);
122       assertEquals("name", info.getName());
123       assertEquals("description", info.getDescription());
124       assertEquals("java.lang.Integer", info.getType());
125       assertEquals(true, info.isWritable());
126       assertEquals(true, info.isReadable());
127       assertEquals(false, info.isIs());
128       assertEquals(new Integer(3), info.getDefaultValue());
129       assertEquals(new Integer(2), info.getMinValue());
130       assertEquals(null, info.getMaxValue());
131
132       info = new OpenMBeanAttributeInfoSupport(
133          "name", "description", SimpleType.INTEGER, true, true, false, null, null, new Integer(4));
134       assertEquals("name", info.getName());
135       assertEquals("description", info.getDescription());
136       assertEquals("java.lang.Integer", info.getType());
137       assertEquals(true, info.isWritable());
138       assertEquals(true, info.isReadable());
139       assertEquals(false, info.isIs());
140       assertEquals(null, info.getDefaultValue());
141       assertEquals(null, info.getMinValue());
142       assertEquals(new Integer(4), info.getMaxValue());
143
144       info = new OpenMBeanAttributeInfoSupport(
145          "name", "description", SimpleType.INTEGER, true, true, false, null, new Integer(2), null);
146       assertEquals("name", info.getName());
147       assertEquals("description", info.getDescription());
148       assertEquals("java.lang.Integer", info.getType());
149       assertEquals(true, info.isWritable());
150       assertEquals(true, info.isReadable());
151       assertEquals(false, info.isIs());
152       assertEquals(null, info.getDefaultValue());
153       assertEquals(new Integer(2), info.getMinValue());
154       assertEquals(null, info.getMaxValue());
155
156       info = new OpenMBeanAttributeInfoSupport(
157          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3), null, null);
158       assertEquals("name", info.getName());
159       assertEquals("description", info.getDescription());
160       assertEquals("java.lang.Integer", info.getType());
161       assertEquals(true, info.isWritable());
162       assertEquals(true, info.isReadable());
163       assertEquals(false, info.isIs());
164       assertEquals(new Integer(3), info.getDefaultValue());
165       assertEquals(null, info.getMinValue());
166       assertEquals(null, info.getMaxValue());
167
168       info = new OpenMBeanAttributeInfoSupport(
169          "name", "description", SimpleType.INTEGER, true, true, false, null, null, null);
170       assertEquals("name", info.getName());
171       assertEquals("description", info.getDescription());
172       assertEquals("java.lang.Integer", info.getType());
173       assertEquals(true, info.isWritable());
174       assertEquals(true, info.isReadable());
175       assertEquals(false, info.isIs());
176       assertEquals(null, info.getDefaultValue());
177       assertEquals(null, info.getMinValue());
178       assertEquals(null, info.getMaxValue());
179
180       info = new OpenMBeanAttributeInfoSupport(
181          "name", "description", SimpleType.STRING, true, true, false, "default",
182          new Object[] { "legal1", "legal2", "default" });
183       assertEquals("name", info.getName());
184       assertEquals("description", info.getDescription());
185       assertEquals("java.lang.String", info.getType());
186       assertEquals(true, info.isWritable());
187       assertEquals(true, info.isReadable());
188       assertEquals(false, info.isIs());
189       assertEquals("default", info.getDefaultValue());
190       assertEquals(3, info.getLegalValues().size());
191       assertTrue("legal1 should be a legal value", info.getLegalValues().contains("legal1"));
192       assertTrue("legal2 should be a legal value", info.getLegalValues().contains("legal2"));
193       assertTrue("default should be a legal value", info.getLegalValues().contains("default"));
194
195       info = new OpenMBeanAttributeInfoSupport(
196          "name", "description", SimpleType.STRING, true, true, false, null,
197          new Object[] { "legal1", "legal2", "default" });
198       assertEquals("name", info.getName());
199       assertEquals("description", info.getDescription());
200       assertEquals("java.lang.String", info.getType());
201       assertEquals(true, info.isWritable());
202       assertEquals(true, info.isReadable());
203       assertEquals(false, info.isIs());
204       assertEquals(null, info.getDefaultValue());
205       assertEquals(3, info.getLegalValues().size());
206       assertTrue("legal1 should be a legal value", info.getLegalValues().contains("legal1"));
207       assertTrue("legal2 should be a legal value", info.getLegalValues().contains("legal2"));
208       assertTrue("default should be a legal value", info.getLegalValues().contains("default"));
209
210       info = new OpenMBeanAttributeInfoSupport(
211          "name", "description", SimpleType.STRING, true, true, false, "default", null);
212       assertEquals("name", info.getName());
213       assertEquals("description", info.getDescription());
214       assertEquals("java.lang.String", info.getType());
215       assertEquals(true, info.isWritable());
216       assertEquals(true, info.isReadable());
217       assertEquals(false, info.isIs());
218       assertEquals("default", info.getDefaultValue());
219       assertEquals(null, info.getLegalValues());
220
221       info = new OpenMBeanAttributeInfoSupport(
222          "name", "description", SimpleType.STRING, true, true, false, null, null);
223       assertEquals("name", info.getName());
224       assertEquals("description", info.getDescription());
225       assertEquals("java.lang.String", info.getType());
226       assertEquals(true, info.isWritable());
227       assertEquals(true, info.isReadable());
228       assertEquals(false, info.isIs());
229       assertEquals(null, info.getDefaultValue());
230       assertEquals(null, info.getLegalValues());
231    }
232
233    public void testOpenType()
234       throws Exception
235    {
236       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
237          "name", "description", SimpleType.STRING, true, true, false);
238       assertEquals(SimpleType.STRING, info.getOpenType());
239    }
240
241    public void testHas()
242       throws Exception
243    {
244       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
245          "name", "description", SimpleType.STRING, true, true, false, "default");
246       assertEquals(true, info.hasDefaultValue());
247
248       info = new OpenMBeanAttributeInfoSupport(
249          "name", "description", SimpleType.STRING, true, true, false, null);
250       assertEquals(false, info.hasDefaultValue());
251
252       info = new OpenMBeanAttributeInfoSupport(
253          "name", "description", SimpleType.INTEGER, true, true, false, null, new Integer(3), null);
254       assertEquals(true, info.hasMinValue());
255
256       info = new OpenMBeanAttributeInfoSupport(
257          "name", "description", SimpleType.INTEGER, true, true, false, null, null, null);
258       assertEquals(false, info.hasMinValue());
259
260       info = new OpenMBeanAttributeInfoSupport(
261          "name", "description", SimpleType.INTEGER, true, true, false, null, null, new Integer(3));
262       assertEquals(true, info.hasMaxValue());
263
264       info = new OpenMBeanAttributeInfoSupport(
265          "name", "description", SimpleType.INTEGER, true, true, false, null, null, null);
266       assertEquals(false, info.hasMaxValue());
267
268       info = new OpenMBeanAttributeInfoSupport(
269          "name", "description", SimpleType.INTEGER, true, true, false, null, new Object[] { new Integer(3) });
270       assertEquals(true, info.hasLegalValues());
271
272       info = new OpenMBeanAttributeInfoSupport(
273          "name", "description", SimpleType.INTEGER, true, true, false, null, null);
274       assertEquals(false, info.hasLegalValues());
275    }
276
277    public void testIsValue()
278       throws Exception
279    {
280       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
281          "name", "description", SimpleType.STRING, true, true, false);
282       assertTrue("String should be a value", info.isValue("string"));
283       assertTrue("Integer should not be a value", info.isValue(new Integer(3)) == false);
284       assertTrue("Null should not be a value", info.isValue(null) == false);
285    }
286
287    public void testIsWritable()
288       throws Exception
289    {
290       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
291          "name", "description", SimpleType.STRING, true, true, false);
292       assertEquals(true, info.isWritable());
293       info = new OpenMBeanAttributeInfoSupport(
294          "name", "description", SimpleType.STRING, true, false, false);
295       assertEquals(false, info.isWritable());
296    }
297
298    public void testIsReadable()
299       throws Exception
300    {
301       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
302          "name", "description", SimpleType.STRING, true, true, false);
303       assertEquals(true, info.isReadable());
304       info = new OpenMBeanAttributeInfoSupport(
305          "name", "description", SimpleType.STRING, false, true, false);
306       assertEquals(false, info.isReadable());
307    }
308
309    public void testIsIs()
310       throws Exception
311    {
312       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
313          "name", "description", SimpleType.BOOLEAN, true, true, true);
314       assertEquals(true, info.isIs());
315       info = new OpenMBeanAttributeInfoSupport(
316          "name", "description", SimpleType.STRING, true, true, false);
317       assertEquals(false, info.isIs());
318    }
319
320    public void testEquals()
321       throws Exception
322    {
323       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
324          "name", "description", SimpleType.STRING, true, true, false);
325
326       assertTrue("Null should not be equal", info.equals(null) == false);
327       assertTrue("Only OpenMBeanAttributeInfo should be equal", info.equals(new Object()) == false);
328
329       OpenMBeanAttributeInfoSupport info2 = new OpenMBeanAttributeInfoSupport(
330          "name", "description", SimpleType.STRING, true, true, false);
331
332       assertTrue("Different instances of the same data are equal", info.equals(info2));
333       assertTrue("Different instances of the same data are equal", info2.equals(info));
334
335       info2 = new OpenMBeanAttributeInfoSupport(
336          "name", "description2", SimpleType.STRING, true, true, false);
337
338       assertTrue("Different instances with different descriptions are equal", info.equals(info2));
339       assertTrue("Different instances with different descritpions are equal", info2.equals(info));
340
341       info2 = new OpenMBeanAttributeInfoSupport(
342          "name2", "description", SimpleType.STRING, true, true, false);
343
344       assertTrue("Instances with different names are not equal", info.equals(info2) == false);
345       assertTrue("Instances with different names are not equal", info2.equals(info) == false);
346
347       info2 = new OpenMBeanAttributeInfoSupport(
348          "name", "description", SimpleType.INTEGER, true, true, false);
349
350       assertTrue("Instances with different types are not equal", info.equals(info2) == false);
351       assertTrue("Instances with different types are not equal", info2.equals(info) == false);
352
353       info2 = new OpenMBeanAttributeInfoSupport(
354          "name", "description", SimpleType.INTEGER, false, true, false);
355
356       assertTrue("Instances with different read are not equal", info.equals(info2) == false);
357       assertTrue("Instances with different read are not equal", info2.equals(info) == false);
358
359       info2 = new OpenMBeanAttributeInfoSupport(
360          "name", "description", SimpleType.INTEGER, true, false, false);
361
362       assertTrue("Instances with different write are not equal", info.equals(info2) == false);
363       assertTrue("Instances with different write are not equal", info2.equals(info) == false);
364
365       info2 = new OpenMBeanAttributeInfoSupport(
366          "name", "description", SimpleType.BOOLEAN, true, true, true);
367       info2 = new OpenMBeanAttributeInfoSupport(
368          "name", "description", SimpleType.BOOLEAN, true, true, true);
369
370       assertTrue("Instances with different write are not equal", info.equals(info2) == false);
371       assertTrue("Instances with different write are not equal", info2.equals(info) == false);
372
373       info = new OpenMBeanAttributeInfoSupport(
374          "name", "description", SimpleType.INTEGER, true, true, false,
375           new Integer(3), new Integer(2), new Integer(4));
376       info2 = new OpenMBeanAttributeInfoSupport(
377          "name", "description", SimpleType.INTEGER, true, true, false,
378          new Integer(2), new Integer(2), new Integer(4));
379
380       assertTrue("Instances with different default values are not equal", info.equals(info2) == false);
381       assertTrue("Instances with different default values are not equal", info2.equals(info) == false);
382
383       info = new OpenMBeanAttributeInfoSupport(
384          "name", "description", SimpleType.INTEGER, true, true, false,
385          new Integer(3), new Integer(2), new Integer(4));
386       info2 = new OpenMBeanAttributeInfoSupport(
387          "name", "description", SimpleType.INTEGER, true, true, false,
388          new Integer(2), null, new Integer(4));
389
390       assertTrue("Instances with different default values are not equal", info.equals(info2) == false);
391       assertTrue("Instances with different default values are not equal", info2.equals(info) == false);
392
393       info = new OpenMBeanAttributeInfoSupport(
394          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3));
395       info2 = new OpenMBeanAttributeInfoSupport(
396          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3));
397
398       assertTrue("Different instances of the same default value are equal", info.equals(info2));
399       assertTrue("Different instances of the same default value are equal", info2.equals(info));
400
401       info = new OpenMBeanAttributeInfoSupport(
402          "name", "description", SimpleType.INTEGER, true, true, false,
403          null, new Integer(2), null);
404       info2 = new OpenMBeanAttributeInfoSupport(
405          "name", "description", SimpleType.INTEGER, true, true, false,
406          null, new Integer(2), null);
407
408       assertTrue("Different instances of the same minimum are equal", info.equals(info2));
409       assertTrue("Different instances of the same minimum are equal", info2.equals(info));
410
411       info = new OpenMBeanAttributeInfoSupport(
412          "name", "description", SimpleType.INTEGER, true, true, false,
413          null, null, new Integer(2));
414       info2 = new OpenMBeanAttributeInfoSupport(
415          "name", "description", SimpleType.INTEGER, true, true, false,
416          null, null, new Integer(2));
417
418       assertTrue("Different instances of the same maximum are equal", info.equals(info2));
419       assertTrue("Different instances of the same maximum are equal", info2.equals(info));
420
421       info = new OpenMBeanAttributeInfoSupport(
422          "name", "description", SimpleType.INTEGER, true, true, false,
423          new Integer(3), new Integer(2), new Integer(4));
424       info2 = new OpenMBeanAttributeInfoSupport(
425          "name", "description", SimpleType.INTEGER, true, true, false,
426          new Integer(3), new Integer(1), new Integer(4));
427
428       assertTrue("Instances with different minimums are not equal", info.equals(info2) == false);
429       assertTrue("Instances with different minimums are not equal", info2.equals(info) == false);
430
431       info = new OpenMBeanAttributeInfoSupport(
432          "name", "description", SimpleType.INTEGER, true, true, false,
433          new Integer(3), new Integer(2), new Integer(4));
434       info2 = new OpenMBeanAttributeInfoSupport(
435          "name", "description", SimpleType.INTEGER, true, true, false,
436          new Integer(3), null, new Integer(4));
437
438       assertTrue("Instances with different minimums are not equal", info.equals(info2) == false);
439       assertTrue("Instances with different minimums are not equal", info2.equals(info) == false);
440
441       info = new OpenMBeanAttributeInfoSupport(
442          "name", "description", SimpleType.INTEGER, true, true, false,
443          new Integer(3), new Integer(2), new Integer(4));
444       info2 = new OpenMBeanAttributeInfoSupport(
445          "name", "description", SimpleType.INTEGER, true, true, false,
446          new Integer(3), new Integer(2), new Integer(5));
447
448       assertTrue("Instances with different maximums are not equal", info.equals(info2) == false);
449       assertTrue("Instances with different maximums are not equal", info2.equals(info) == false);
450
451       info = new OpenMBeanAttributeInfoSupport(
452          "name", "description", SimpleType.INTEGER, true, true, false,
453          new Integer(3), new Integer(2), new Integer(4));
454       info2 = new OpenMBeanAttributeInfoSupport(
455          "name", "description", SimpleType.INTEGER, true, true, false,
456          new Integer(3), new Integer(2), null);
457
458       assertTrue("Instances with different maximums are not equal", info.equals(info2) == false);
459       assertTrue("Instances with different maximums are not equal", info2.equals(info) == false);
460
461       info = new OpenMBeanAttributeInfoSupport(
462          "name", "description", SimpleType.INTEGER, true, true, false,
463          null, new Object[] { new Integer(2), new Integer(3) });
464       info2 = new OpenMBeanAttributeInfoSupport(
465          "name", "description", SimpleType.INTEGER, true, true, false,
466          null, new Object[] { new Integer(2), new Integer(3) });
467
468       assertTrue("Different instances of the same legal values are equal", info.equals(info2));
469       assertTrue("Different instances of the same legal values are equal", info2.equals(info));
470
471       info = new OpenMBeanAttributeInfoSupport(
472          "name", "description", SimpleType.INTEGER, true, true, false,
473          null, new Object[] { new Integer(2), new Integer(3) });
474       info2 = new OpenMBeanAttributeInfoSupport(
475          "name", "description", SimpleType.INTEGER, true, true, false,
476          null, new Object[] { new Integer(2), new Integer(4) });
477
478       assertTrue("Different instances with different legal values are equal", info.equals(info2) == false);
479       assertTrue("Different instances with different legal values are equal", info2.equals(info) == false);
480
481       info = new OpenMBeanAttributeInfoSupport(
482          "name", "description", SimpleType.INTEGER, true, true, false,
483          null, new Object[] { new Integer(2), new Integer(3) });
484       info2 = new OpenMBeanAttributeInfoSupport(
485          "name", "description", SimpleType.INTEGER, true, true, false,
486          null, new Object[] { new Integer(2) });
487
488       assertTrue("Different instances with different legal values are equal", info.equals(info2) == false);
489       assertTrue("Different instances with different legal values are equal", info2.equals(info) == false);
490
491       info = new OpenMBeanAttributeInfoSupport(
492          "name", "description", SimpleType.INTEGER, true, true, false,
493          null, new Object[] { new Integer(2), new Integer(3) });
494       info2 = new OpenMBeanAttributeInfoSupport(
495          "name", "description", SimpleType.INTEGER, true, true, false,
496          null, null);
497
498       assertTrue("Different instances with different legal values are equal", info.equals(info2) == false);
499       assertTrue("Different instances with different legal values are equal", info2.equals(info) == false);
500    }
501
502    public void testHashCode()
503       throws Exception
504    {
505
506       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
507          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3), new Integer(2), new Integer(4));
508       int myHash = "name".hashCode() + SimpleType.INTEGER.hashCode() +
509          new Integer(3).hashCode() + new Integer(2).hashCode() + new Integer(4).hashCode();
510       assertEquals(myHash, info.hashCode());
511       info = new OpenMBeanAttributeInfoSupport(
512          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3),
513          new Object[] { new Integer(2), new Integer(3), new Integer(4) } );
514       myHash = "name".hashCode() + SimpleType.INTEGER.hashCode() +
515          new Integer(3).hashCode() + new Integer(2).hashCode() + new Integer(3).hashCode() + new Integer(4).hashCode();
516       assertEquals(myHash, info.hashCode());
517    }
518
519    public void testToString()
520       throws Exception
521    {
522       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
523          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3), new Integer(2), new Integer(4));
524
525       String toString = info.toString();
526       assertTrue("info.toString() should contain the name", toString.indexOf("name") != -1);
527       assertTrue("info.toString() should contain the simple type",
528          toString.indexOf(SimpleType.INTEGER.toString()) != -1);
529       assertTrue("info.toString() should contain the default value",
530          toString.indexOf(new Integer(3).toString()) != -1);
531       assertTrue("info.toString() should contain the minimum value",
532          toString.indexOf(new Integer(2).toString()) != -1);
533       assertTrue("info.toString() should contain the maximum value",
534          toString.indexOf(new Integer(4).toString()) != -1);
535
536       info = new OpenMBeanAttributeInfoSupport(
537          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3),
538          new Object[] { new Integer(2), new Integer(3), new Integer(4) } );
539       assertTrue("info.toString() should contain the legal value 2",
540          toString.indexOf(new Integer(2).toString()) != -1);
541       assertTrue("info.toString() should contain the legal value 3",
542          toString.indexOf(new Integer(3).toString()) != -1);
543       assertTrue("info.toString() should contain the legal value 4",
544          toString.indexOf(new Integer(4).toString()) != -1);
545    }
546
547    public void testSerialization()
548       throws Exception
549    {
550       OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
551          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3), new Integer(2), new Integer(4));
552
553       // Serialize it
554
ByteArrayOutputStream baos = new ByteArrayOutputStream();
555       ObjectOutputStream oos = new ObjectOutputStream(baos);
556       oos.writeObject(info);
557     
558       // Deserialize it
559
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
560       ObjectInputStream ois = new ObjectInputStream(bais);
561       Object result = ois.readObject();
562
563       assertEquals(info, result);
564
565       info = new OpenMBeanAttributeInfoSupport(
566          "name", "description", SimpleType.INTEGER, true, true, false, new Integer(3),
567          new Object[] { new Integer(2), new Integer(3), new Integer(4) } );
568
569       // Serialize it
570
baos = new ByteArrayOutputStream();
571       oos = new ObjectOutputStream(baos);
572       oos.writeObject(info);
573     
574       // Deserialize it
575
bais = new ByteArrayInputStream(baos.toByteArray());
576       ois = new ObjectInputStream(bais);
577       result = ois.readObject();
578
579       assertEquals(info, result);
580    }
581
582    public void testErrors1()
583       throws Exception
584    {
585       boolean caught = false;
586       try
587       {
588          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
589             null, "description", SimpleType.INTEGER, true, true, false);
590       }
591       catch (IllegalArgumentException e)
592       {
593          caught = true;
594       }
595       if (caught == false)
596          fail("Expected IllegalArgumentException for null name");
597
598       caught = false;
599       try
600       {
601          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
602             "", "description", SimpleType.INTEGER, true, true, false);
603       }
604       catch (IllegalArgumentException e)
605       {
606          caught = true;
607       }
608       if (caught == false)
609          fail("Expected IllegalArgumentException for an empty name");
610
611       caught = false;
612       try
613       {
614          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
615             "name", null, SimpleType.INTEGER, true, true, false);
616       }
617       catch (IllegalArgumentException e)
618       {
619          caught = true;
620       }
621       if (caught == false)
622          fail("Expected IllegalArgumentException for null description");
623
624       caught = false;
625       try
626       {
627          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
628             "name", "", SimpleType.INTEGER, true, true, false);
629       }
630       catch (IllegalArgumentException e)
631       {
632          caught = true;
633       }
634       if (caught == false)
635          fail("Expected IllegalArgumentException for an empty description");
636
637       caught = false;
638       try
639       {
640          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
641             "", "description", SimpleType.INTEGER, true, true, false);
642       }
643       catch (IllegalArgumentException e)
644       {
645          caught = true;
646       }
647       if (caught == false)
648          fail("Expected IllegalArgumentException for an empty name");
649
650       caught = false;
651       try
652       {
653          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
654             "name", "description", null, true, true, false);
655       }
656       catch (IllegalArgumentException e)
657       {
658          caught = true;
659       }
660       if (caught == false)
661          fail("Expected IllegalArgumentException for null simple type");
662    }
663
664    public void testErrors2()
665       throws Exception
666    {
667       boolean caught = false;
668       try
669       {
670          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
671             null, "description", SimpleType.INTEGER, true, true, false, new Integer(3));
672       }
673       catch (IllegalArgumentException e)
674       {
675          caught = true;
676       }
677       if (caught == false)
678          fail("Expected IllegalArgumentException for null name");
679
680       caught = false;
681       try
682       {
683          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
684             "", "description", SimpleType.INTEGER, true, true, false, new Integer(3));
685       }
686       catch (IllegalArgumentException e)
687       {
688          caught = true;
689       }
690       if (caught == false)
691          fail("Expected IllegalArgumentException for an empty name");
692
693       caught = false;
694       try
695       {
696          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
697             "name", null, SimpleType.INTEGER, true, true, false, new Integer(3));
698       }
699       catch (IllegalArgumentException e)
700       {
701          caught = true;
702       }
703       if (caught == false)
704          fail("Expected IllegalArgumentException for null description");
705
706       caught = false;
707       try
708       {
709          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
710             "name", "", SimpleType.INTEGER, true, true, false, new Integer(3));
711       }
712       catch (IllegalArgumentException e)
713       {
714          caught = true;
715       }
716       if (caught == false)
717          fail("Expected IllegalArgumentException for an empty description");
718
719       caught = false;
720       try
721       {
722          OpenMBeanAttributeInfoSupport info = new OpenMBeanAttributeInfoSupport(
723             "", "description", SimpleType.INTEGER, true, true, false, new Integer(3));
724 <